gltfExporter may have to add morphTarget to all primitives
Closed this issue · 1 comments
reminjp commented
UniGLTF(UniVRM)で出力したVRMモデルをthree.jsでモーフィングする際、meshにprimitiveが複数あるような場合に、その内の1つしかモーフしない症状に遭遇しました。
色々とモーフに関連するコードを当たった結果、UniGLTFの以下の部分でmorphTarget
をgltfMesh.primitives[0]
にしか追加していないことによるものではないかと考え、下記のように書き変えると(おそらく)正常にモーフできるようになりました。
three.jsのglTFローダ側で対処することも考えられましたが、glTFの仕様を見るにtargets
を省略することは想定されてなさそうでしたので、こちらでissueを書きました。🙇
All primitives are required to list the same number of
targets
in the same order.
UniGLTF/Core/Scripts/IO/gltfExporter.cs
Lines 506 to 512 in b6d3730
for (int k = 0; k < gltfMesh.primitives.Count; ++k) {
gltfMesh.primitives[k].targets.Add(morphTarget);
gltfMesh.primitives[k].extras.targetNames.Add(mesh.GetBlendShapeName(j));
}
ousttrue commented
フィードバックありがとうございます。
修正取り入れさせていただきます。