1

私はかなり大きな3DSシーンを持っており、多くの個別のメッシュ(数千)があります。各メッシュは単一のマテリアルのみを使用する必要があります。つまり、そのメッシュ内のすべての三角形は、メッシュに割り当てられた同じマテリアルを使用します。これは事実のようですが、メッシュに実際には使用されていないサブマテリアルがいくつか割り当てられている場合も多くあります。

3DSでは問題ありませんが、リアルタイム3Dエンジンで使用するためにシーンをエクスポートします。これにより、エクスポートが混乱します。シーン全体、または現在選択されているメッシュのいずれかに作用するスクリプトを作成できるかどうか疑問に思いました。使用されていないすべての[サブ]マテリアルを各メッシュから削除します。

私はアーティストではありません。これが理にかなっていて、すべての用語が正しいことを願っています。

4

2 に答える 2

2

multisb マテリアルからどのマテリアルが正しいかをどのように知ることができますか? それが常に最初の素材である場合、次のようなことができます

-- walk over all geometry find which has multiSub and apply first material
for o in geometry where isKindOf o.material multimaterial do o.material = o.material.material1

Edit1:面1がマテリアルIDをリードしていると仮定すると、できること

-- walk over all geometry find which has multiSub and apply first material
for o in selection where isKindOf o.material multimaterial do 
(
    -- Get face material ID from face 1
    local id = getFaceMatID o.Mesh 1
    -- Assign that material
    o.material = o.material[id]
)
于 2012-03-29T19:42:32.017 に答える
-1

これを試してください:

for i in 1 to meditMaterials.count where (MeditUtilities.isMaterialInUse meditMaterials[i] == false) do meditMaterials[i] = Standard()
ATSOps.Refresh()
freeSceneBitmaps()

または、次のように修飾子のテクスチャを検出することもできます。

modTexMaps = #()
for obj in geometry where obj.modifiers.count != 0 do
(
for m = 1 to obj.modifiers.count do
(
    for p in (getpropnames obj.modifiers[m]) \
    where isKindOf (tex = getproperty obj.modifiers[m] p) texturemap do 
    (
        append modTexMaps tex
    )
)
)
modTexMaps
于 2017-01-10T14:26:17.920 に答える