Multi-Texture OBJ-> JSON変換ファイルは、フェイステクスチャマッピングをどのように追跡しますか?

StackOverflow https://stackoverflow.com/questions/9305158

質問

私は手動でJSON 3DモデルをWebGLコードにロードしようとしています(3つのLIBはありません)。 OBJ-> JSON変換ファイルでは、どのようなテクスチャーが続く顔の「アクティブ」であるかを知るにはどうすればよいですか? OBJファイルは「USEMTL」タグを使用して使用中のテクスチャ/素材を識別しますが、JSONで作業するときにそのようなポインターを見つけることができないようです。やがて、私はによって書かれたobj-> jsonコンバーターを使用しています AlteredQ

束に感謝します、ロッド

役に立ちましたか?

解決

このファイルを見てください: three.js / src / extras / loaders / JSONLoader.js.

の各顔の最初の要素 faces JSONファイルの配列は少しフィールドです。最初のビットは、その顔に3つのO 4インデックスがあるかどうかを示しています。 2番目のビットには、その顔に資料が割り当てられているかどうかが表示されます。材料インデックスは、ある場合、インデックスの後に表示されます。

例: faces: [2, 46, 44, 42, 0, 1, 45, 46, 48, 3, ...

最初の顔(素材付き三角形):

Type: 2 (00000010b)
Indices: 46, 44, 42
Material index: 0

2番目の顔(素材のないクワッド):

Type: 1 (00000001b)
Indices: 45, 46, 48

3番目の顔(素材付きクワッド):

Type: 3 (00000011b)
Indices: ...

そのビットフィールドの完全な意味についてソースコードを確認してください。

他のヒント

OBJ-> JSONコンバーターでは、KIKCJSゲームエンジン用に書いています。各素材には、独自のインデックスがあります。

これは、次のような単純なOBJモデルを意味します

    mtllib plane.mtl
    o Plane
    v 1.000000 0.000000 -1.000000
    v 1.000000 0.000000 1.000000
    v -1.000000 0.000000 1.000000
    v -1.000000 0.000000 -1.000000
    usemtl Material
    s 1
    f 2 3 4
    usemtl Material.001
    f 1 2 4

これに翻訳されます(2つのインデックスがあり、1つは各資料に):

    [
       {
          "vertex": [1,0,1,-1,0,1,-1,0,-1,1,0,-1],
          "name": "Plane mesh",
          "normal": [0,-1,0,0,-1,0,0,-1,0,0,0,0],
          "indices0": [0,1,2],
          "indices1": [3,0,2]
       }
    ]

コンバーチオンにはオンラインモデルビューアーを使用します。

http://www.kickjs.org/example/model_viewer/model_viewer.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top