私は手動で(Three.jsのようなライブラリはありません)JSON 3Dモデルを私のwebGLコードに読み込みますが、私のモデルには1つ以上のテクスチャがある場合は苦労しています。 OBJ-> JSON変換されたファイルでは、どのテクスチャが後続の顔の「アクティブ」なのかをどのように知ることができますか? OBJファイルは 'usemtl'タグを使って使用中のテクスチャ/マテリアルを識別しますが、JSONを扱う際にはそのようなポインタを見つけることができません。 時間で、私はKickJSゲームエンジンのために書かれているOBJ-> JSONコンバータでは、 ロッドマルチテクスチャOBJ-> JSON変換ファイルは、フェイステクスチャマッピングをどのように追跡しますか?
答えて
目を見てみましょうファイル:three.js/src/extras/loaders/JSONLoader.js
です。
faces
JSONファイルの各面の最初の要素は、ビットフィールドです。最初のビットは、その顔が3つの4つのインデックスを持つかどうかを示します。 2番目のビットは、その面に割り当てられた素材があるかどうかを示します。材料インデックスがある場合は、インデックスの後に表示されます。
例:faces: [2, 46, 44, 42, 0, 1, 45, 46, 48, 3, ...
第一の面(材料と三角形):
Type: 2 (00000010b)
Indices: 46, 44, 42
Material index: 0
第二の面(材料なしクワッド):
Type: 1 (00000001b)
Indices: 45, 46, 48
第三の面(材料とクワッド):
Type: 3 (00000011b)
Indices: ...
そのビットフィールドの完全な意味のソースコードを確認してください。
おかげでたくさんによって書かれOBJ-> JSONコンバーターを使用しています、それぞれの材料が持ちますそれ自身の指標の範囲。
これは、
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
ような単純なOBJモデルは、(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]
}
]
convertionのオンラインモデルビューアを使用:
http://www.kickjs.org/example/model_viewer/model_viewer.html
回答ありがとう、mortennobel。あなたが提供したリンクは壊れているようです。私が見ることができるのは、ボタン(ダック、キューブ、ティーポットなど)だけです。 – rod
現在Firefoxに問題があります。 Chromeを試す(Firefoxの問題を解決している間に) – Mortennobel
問題が修正されました。フィードバックをお寄せいただきありがとうございます。興味深いツールが欲しい。 – Mortennobel
- 1. このJSON datetimeはどのように変換しますか?
- 2. ファイルのjsonエントリをどのようにデータフレームに変換しますか?
- 3. どのようにしてCSVをjsonファイルに変換できますか?
- 4. dropboxのようなファイルの変更を追跡するには?
- 5. MVVMでの変更追跡はどのように処理しますか?
- 6. アプリケーションでSMBのファイルをどのように追跡しますか?
- 7. どのようにPythonのグローバル変数を追跡しますか
- 8. JPanelをどのようにファイルに変換しますか?
- 9. どのように.h5ファイルを.csvに変換しますか?
- 10. デザイナーはどのように追跡できますか?
- 11. シーケンスの変更をどのように追跡できますか?
- 12. プロセスメモリとCPUをどのように追跡できますか?
- 13. Mercurial:別の追跡ファイルに名前が変更されたファイルの変更を追跡できますか?
- 14. JSONのようなJSONをJSONのように変換する
- 15. UINavigationControllerはどのように複数のUIViewControllerを追跡しますか?
- 16. イテレータオブジェクトはどのようにJavaScriptの位置を追跡しますか?
- 17. AEM packmgrはサーバー上のパッケージバージョンをどのように追跡しますか?
- 18. マイクロプロセッサはヒープをどのように追跡していますか?
- 19. Application InsightはUser_Idをどのように追跡していますか?
- 20. ftraceはどのように割り込みサービスルーチンを追跡しますか?
- 21. コバルトパケットはどのようにしてオーパスが追跡されますか?
- 22. シェフのナイフによるシステムの変更をどのように追跡しますか?
- 23. keen.ioで失敗したイベントをどのように追跡しますか?
- 24. どのようにjavascript関数を追跡するには?
- 25. どのようにデータをSQLテーブルからExcelファイルに変換しますか?
- 26. Meteor.usersコレクションにどのように変換を追加しますか?
- 27. どのようにPHP側から車両を追跡する
- 28. このJSONリクエストをPHPの新しいJSON出力にどのように変換しますか?
- 29. PythonでJSONファイルをCSVファイルに変換するにはどうすればよいですか?
- 30. Pythonを使用してxmlファイルをJSONに変換するにはどうすればよいですか?
スポットがあります。答えてくれてありがとう、Juan。 – rod
ちょうど説明の問題として、そのフィールドは「バイトフィールド」ではないでしょうか? 「ビットフィールド」は1ビットを保持し、0または1の2つの可能性しか与えません。 – rod
@rodいいえ、「ビットフィールド」はOKです。 Wikipedia [記事](http://en.wikipedia.org/wiki/Bit_field)を参照してください。 –