私は手動で(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. dropboxのようなファイルの変更を追跡するには?
- 4. MVVMでの変更追跡はどのように処理しますか?
- 5. アプリケーションでSMBのファイルをどのように追跡しますか?
- 6. デザイナーはどのように追跡できますか?
- 7. Mercurial:別の追跡ファイルに名前が変更されたファイルの変更を追跡できますか?
- 8. UINavigationControllerはどのように複数のUIViewControllerを追跡しますか?
- 9. マイクロプロセッサはヒープをどのように追跡していますか?
- 10. このJSONリクエストをPHPの新しいJSON出力にどのように変換しますか?
- 11. シェフのナイフによるシステムの変更をどのように追跡しますか?
- 12. Pythonを使用してxmlファイルをJSONに変換するにはどうすればよいですか?
- 13. Meteor.usersコレクションにどのように変換を追加しますか?
- 14. SimpleOrderedMapをJSON文字列またはJSONオブジェクトに変換するにはどうすればよいですか?
- 15. papervision3dはどのようにテクスチャを変換しますか?
- 16. Oracle 12cでSQLクエリをどのように追跡しますか?
- 17. Google AnalyticsでCaps Lockユーザーをどのように追跡しますか?
- 18. 私はどのようにphpページを.docファイルに変換できますか?
- 19. プレーンストリングをJSONに変換しますか?
- 20. Web.config変換はどのように動作しますか?
- 21. Stackoverflowのようなサイトは、投稿が持つビューをどのように追跡しますか?
- 22. ファイルがjavascriptで選択されたかどうかを追跡するには?
- 23. どのようにLPCWSTRをconst char *に変換しますか?
- 24. どのようにttfフォントをpff2に変換しますか?
- 25. xcodeプロジェクトをどのようにココアポッドに変換しますか?
- 26. Android - どのようにhtmlをpdfに変換しますか?
- 27. どのようにドキュメントをプレビューイメージに変換しますか?
- 28. ファイルのダウンロードを追跡するには
- 29. GITのコンテキストで、追跡対象ファイルと未追跡ファイルとは何ですか?
- 30. FLAファイル(バージョンコントロール経由)の変更を追跡するには
スポットがあります。答えてくれてありがとう、Juan。 – rod
ちょうど説明の問題として、そのフィールドは「バイトフィールド」ではないでしょうか? 「ビットフィールド」は1ビットを保持し、0または1の2つの可能性しか与えません。 – rod
@rodいいえ、「ビットフィールド」はOKです。 Wikipedia [記事](http://en.wikipedia.org/wiki/Bit_field)を参照してください。 –