マテリアルの削除
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
3件表示
(全3件)
すべてのコメント一覧へ
投稿ツリー
-
マテリアルの削除
(七篠, 2009/5/31 14:54)
-
Re: マテリアルの削除
(uimac, 2009/5/31 15:25)
-
Re: マテリアルの削除
(七篠, 2009/6/21 13:39)
マテリアルの削除
msg# 1
七篠
居住地: チバラギ
投稿数: 37
こんにちは。
不要なマテリアルをスクリプトで削除したいのですが、上手くいきません。
参照されていると削除されないとのことらしいので、clearScriptLink やNone をリストにしたものを setMaterials に渡してやってみたのですが、効果がありませんでした。
解決策をご存知の方、いらっしゃいましたらアドバイスいただけると幸いです(スクリプトの現状をアップしておきます。pyファイルをアップしようと思ったのですが、上手くいかなかったのでソースをそのまま貼り付けました)。
import Blender
from Blender import *
material_name_list = []
materials = []
for i in xrange(16):
materials.append(None)
scene = Blender.Scene.GetCurrent()
meshes = [ob for ob in scene.objects if ob.type == 'Mesh']
# ----------------------------------
# get unused materials
# return list of Material
# ----------------------------------
def getUnusedMaterials(meshes):
# get all materials
allMats = Material.Get()
for material in allMats:
material.clearScriptLinks()
material_name_list.append(material.name)
print "hoge"
for mesh in meshes:
print mesh.getData().materials
mesh.setMaterials(materials)
# mesh.clearScriptLinks(material_name_list)
mesh.clearScriptLinks()
print mesh.getData().materials
print "fga"
return allMats
# ----------------------------------
# delete links from materials
# !incomplete(node links etc)!
# ----------------------------------
def deleteLinks(materials):
for mat in materials:
mat.clearIpo()
mat.clearScriptLinks()
for i in range(9):
mat.clearTexture(i)
# ----------------------------------
# execute
# ----------------------------------
mats = getUnusedMaterials(meshes)
print mats
deleteLinks(mats)
不要なマテリアルをスクリプトで削除したいのですが、上手くいきません。
参照されていると削除されないとのことらしいので、clearScriptLink やNone をリストにしたものを setMaterials に渡してやってみたのですが、効果がありませんでした。
解決策をご存知の方、いらっしゃいましたらアドバイスいただけると幸いです(スクリプトの現状をアップしておきます。pyファイルをアップしようと思ったのですが、上手くいかなかったのでソースをそのまま貼り付けました)。
import Blender
from Blender import *
material_name_list = []
materials = []
for i in xrange(16):
materials.append(None)
scene = Blender.Scene.GetCurrent()
meshes = [ob for ob in scene.objects if ob.type == 'Mesh']
# ----------------------------------
# get unused materials
# return list of Material
# ----------------------------------
def getUnusedMaterials(meshes):
# get all materials
allMats = Material.Get()
for material in allMats:
material.clearScriptLinks()
material_name_list.append(material.name)
print "hoge"
for mesh in meshes:
print mesh.getData().materials
mesh.setMaterials(materials)
# mesh.clearScriptLinks(material_name_list)
mesh.clearScriptLinks()
print mesh.getData().materials
print "fga"
return allMats
# ----------------------------------
# delete links from materials
# !incomplete(node links etc)!
# ----------------------------------
def deleteLinks(materials):
for mat in materials:
mat.clearIpo()
mat.clearScriptLinks()
for i in range(9):
mat.clearTexture(i)
# ----------------------------------
# execute
# ----------------------------------
mats = getUnusedMaterials(meshes)
print mats
deleteLinks(mats)
投票数:5
平均点:6.00
Re: マテリアルの削除
msg# 1.1
uimac
投稿数: 49
残念ながら、Nodeとかもあるので、スクリプトからだと完全には無理だと思います。
投票数:2
平均点:5.00
Re: マテリアルの削除
msg# 1.1.1
七篠
居住地: チバラギ
投稿数: 37
お返事ありがとうございます。
> 残念ながら、Nodeとかもあるので、スクリプトからだと完全には無理だと思います。
いつかそのような機能が追加されるといいですね。
> 残念ながら、Nodeとかもあるので、スクリプトからだと完全には無理だと思います。
いつかそのような機能が追加されるといいですね。
投票数:4
平均点:5.00
3件表示
(全0件)
すべてのコメント一覧へ
ログイン
クイックリンク
2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)
●ニュース(英文)
BlenderNation
●Blenderコミュニティ
blenderartists.org
●Blender Q&A
- Blender Stack Exchange
●テストビルド
Buildbot(自動生成)
●開発関連
公式開発サイト
Blender開発blog
Blender Wiki