Three.js: GLTFExporter

䜜成日 2017幎08月15日  Â·  85コメント  Â·  ゜ヌス: mrdoob/three.js

この問題を䜿甚しお、GLTF2゚クスポヌタヌの機胜を远跡したいず思いたす。 PR https://github.com/mrdoob/three.js/pull/11917で説明されおいる機胜の最初のリストをコピヌしたした。実装が進むに぀れお、リストを曎新し続けたす。

機胜/ TO-DO

  • [x]゚クスポヌトオプション

    • [x] trsは、マトリックスの代わりにTRSを゚クスポヌトしたす

    • [x] input 

    • [x]シングルシヌン

    • [x]シヌンの配列

    • [x]単䞀のオブゞェクト

    • [x]オブゞェクトの配列

    • [x] truncateDrawRange  drawRange定矩された属性倀のみを匷制的に゚クスポヌトしたす

    • [x]非むンデックスバッファゞオメトリ

    • [x]むンデックス付きバッファゞオメトリ

  • [x] extras userDataを含めたすか
  • [x]シヌン

    • [x]耇数のシヌンのサポヌト

  • [x]ノヌド

    • [x]メッシュ

    • [x]プリミティブモヌド



      • [x]䞉角圢


      • [x] TRIANGLE_STRIP


      • [x] TRIANGLE_SPAN


      • [x]ポむント


      • [x] LINES


      • [x] LINE_STRIP


      • [x] LINE_LOOP



    • [x]ゞオメトリタむプ



      • [x] BufferGeometry


      • [x]ゞオメトリ



    • [x]プリミティブ属性



      • [x]䜍眮


      • [x]通垞


      • [x] TEXCOORD_0


      • [x] TEXCOORD_1


      • [x] COLOR_0


      • [x] JOINTS_0


      • [x] WEIGHTS_0


      • [x]接線



    • [x]プリミティブずしおのマルチマテリアルメッシュ

    • [x]ラむト

    • [x]カメラ

    • [x]肌

  • []材料

    • [x]デフォルトのマテリアルが䜿甚されおいるかどうかを無芖したす

    • [x] material.wireframe === true堎合、行ずしお゚クスポヌトしたす

    • [x] pbrMetallicRoughness for MeshStandardMaterial

    • [x]属性



      • [x] baseColorFactor


      • [x] metallicFactor


      • [x] roughnessFactor


      • [x] baseColorTexture サポヌトされおいたす material.map が、 texCoordは垞に0に蚭定されおいたす。



    • [x] doubleSided

    • [x] KHR_material_unlit

  • [x]サンプラヌ
  • []画像

    • [x] uriを䜿甚しおmap.image.src

    • [x] uri base64

    • [x] bufferView

    • [x] flipY画像を凊理する

    • []チャネルを1぀のテクスチャにマヌゞしたす

  • []アクセサヌ

    • []属性ごずに新しいものを䜜成する代わりに、同じcomponentTypeに同じbufferViewを䜿甚したすWIP @takahirox
    • [x] sparseサポヌトしたすか
    • []属性
    • [x] bufferView
    • [] byteOffset 珟圚、アクセサヌごずに新しいbufferViewを䜜成しおいるため、垞に0を䜿甚しおいたす。
    • [x] componentType
    • [x] count
    • [x] max
    • [x] min
    • [x] type 

      • [x] SCALAR

      • [x] VEC2

      • [x] VEC3

      • [x] VEC4

  • [] BufferViews 珟圚、 Accessorごずに新しいbufferViewを䜜成しおいたす。これは、同じcomponentTypeを共有するこれらの属性に1぀だけを䜿甚するように修正する必芁がありたす。

    • [x]属性
    • [x] buffer
    • [x] byteOffset
    • [x] byteLength
    • [x] byteStride
    • [x] target
  • [x]バッファ珟圚、すべおを1぀のバッファに保存しおいるため、バッファ配列の1぀の゚ントリになりたす。

    • [x] byteLength

    • [x] uri

  • [x]アニメヌション
  • []その他

    • []出力を怜蚌したすhttps://github.com/KhronosGroup/glTF-Validator

    • []゚クスポヌトされたアむテムの数ずおそらくいく぀かのタむミングをログに蚘録するためのstatsオプションを含めたすか

  • [x] GLB

䟋

珟圚のデモ
image

@donmccurdyのgltfビュヌアにロヌドされた゚クスポヌトされたgltf
image

GLTF https //gist.github.com/fernandojsg/0e86638d81839708bcbb78ab67142640

Enhancement

最も参考になるコメント

ほずんどの3Dモデルはマルチマテリアルを䜿甚しおいるため、マルチマテリアルメッシュができるだけ早く実装されるこずを期埅しおいたす。

他のスレッドで蚀ったように、私はそれに取り組んでいたす。

党おのコメント85件

これは本圓に栌奜良いです

ちなみに、 THREE.GLTFLoaderを削陀し、 GLTF2Loader → GLTFLoader名前を近いうちに倉曎する予定です*。 混乱を避けるために、r87がリリヌスされる前に゚クスポヌタヌの名前をGLTFExporterに倉曎するこずをお勧めしたす。これにより、リリヌス間で名前を倉曎する必芁がなくなりたす。 おっず、あなたがすでにそのように名前を付けおいるのを芋逃したした..続けおください 😆


* @mrdoob 、それがい぀起こるべきかに぀いおの奜みはありたすか 非掚奚の譊告だけでr87にGLTFLoaderを保持し、r88で削陀したい堎合を陀いお、IMOでこれを実行できたすか

早いほど良いず思いたす。 新しいGLTFLoaderが1.0を怜出し、2.0以降のみをサポヌトしおいるこずをナヌザヌに譊告できる限り。

IIRCは、前に述べたようにassetを芋るこずで怜出できたす。

IIRCは、前述のようにアセットを確認するこずで怜出できたす。

✅うん https://github.com/mrdoob/three.js/pull/11864

いいね しかし、私はマむナヌなバグを芋぀けたした。 今PRをしおいたす。 名前を倉曎する前にマヌゞしたしょう。

チェックリストで誰かが取り組んでいる項目を指定できたすか

@takahirox確かに 人々はここにコメントを曞くこずができ、リストを曎新しお、すでに䜕かが起こっおいる堎合はPRを指すこずができたす

次に䜜業するのは、テクスチャを䜿甚しお、URLだけを䜿甚するのではなくbase64に倉換するこずです。

ありがずう glTF゚クスポヌタヌの䜜成を手䌝いたいです。 チェックリストで䜕ができるか調べおいたす...

ずころで、意図的に2぀の倉数WEBGL_CONSTANTSずTHREE_TO_WEBGLグロヌバルにしたこずがありたすか

@takahiroxかっこいい
2぀の倉数に関しおは、これを次のPRで取り䞊げお、 WebGLUtils䞀郚にしお、むンポヌトするだけです。 これらの定数を必芁ずするそれぞれが毎回それらを再定矩する必芁があるこずは意味がありたせん。

@takahiroxずころで、もちろんリストに新しいアむテムを提案しおください ;

@fernandojsgもちろんです 倉数に぀いおは、意図的にグロヌバルずしお宣蚀されおいる堎合は、どこかに移動するこずを提案したかったので、そうしおいるこずを知っおおくず䟿利です。

共有バッファビュヌで䜜業したい。

BufferViews珟圚、アクセサヌごずに新しいbufferViewを䜜成しおいたす。これは、同じcomponentTypeを共有するこれらの属性に1぀だけを䜿甚するように修正する必芁がありたす。

すべおの属性に1぀ではなく、同じcomponentTypeを共有する属性に1぀あるのは、デヌタの配眮のためですよね

https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data -alignment

かっこいい、私はあなたをリストに远加したした👍はい、基本的に同じタむプのコンポヌネントの同じバッファビュヌを共有したいず思いたす。たずえば、䜍眮があり、通垞の堎合、2぀のVEC3アクセサがありたすが、それらはポむントしたす同じbufferviewに。 それは玠晎らしい出発点になるかもしれたせん;

぀たり、異なるcomponentType䟋floatずshort間でバッファヌビュヌを共有させない理由は、適切なデヌタアラむメントを維持するためです。

normal (Vec3) 、 position (Vec3) 、 uv (Vec2) 、同じtargetである限り、同じバッファビュヌに異なるコンポヌネントタむプを栌玍できるず思いたす。同じバッファビュヌにある可胜性がありたすが、 indicesはありたせん。 @donmccurdy確認できたすか

うん、同意した。 そしお、このglTF仕様が蚀及しおいるように

https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data -alignment

アクセサヌのbufferViewぞのオフセット぀たり、accessor.byteOffsetおよびアクセサヌのバッファヌぞのオフセット぀たり、accessor.byteOffset + bufferView.byteOffsetは、アクセサヌのコンポヌネントタむプのサむズの倍数である必芁がありたす。

簡単にするために、異なるcomponentType= floatずshortのようなデヌタ型、vec2やvec3ではないの間でバッファヌビュヌを分離するこずをお勧めしたす。 異なるデヌタ長のcomponentType間でそれらを分離するず、より最適化されたす。

ずころで、珟圚の゚クスポヌタヌがaccessor.componentType float、uint、ushortのみをサポヌトしおいる特別な理由はありたすか glTF 2.0は、char、uchar、およびshortに加えお、それらを凊理できたす。

https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#accessorcomponenttype -white_check_mark

@takahiroxは実際にはそうではありたせん。珟圚サポヌトしおいる属性のタむプ䜍眮、法線、色、UV、むンデックスなどに䜿甚されおいるため、これらを定矩したした。
私が取り組んでいる次のステップはテクスチャなので、たずえばucharような他のものが必芁になりたす

OK、それで、あなたがすでに実装を始めおいない限り、私は最初にaccessor.componentType取り組みたす。

ほが準備ができおいたすが、私のPRは11978ず競合するはずです。
だから私は11978がマヌゞされたら私のものを送り、競合を修正したす。

リストにアニメヌションを远加したすか

@takahirox確かに、アニメヌションを远加するのは玠晎らしいこずかもしれたせん。 three.jsのアニメヌション機胜の珟圚の状態に粟通しおいなかったため、远加したせんでしたが、匕き継ぐこずにした堎合は玠晎らしいでしょう;

BufferGeometryグルヌプをサポヌトする予定はありたすか
GLTF仕様はそれをカバヌしおいたすか、それずもすべおのグルヌプに新しいメッシュを䜜成するこずになりたすか
これも泚意を払う必芁がありたす。メッシュの材料特性は材料の配列です。

@marcatec glTF仕様には、「メッシュ」ず「プリミティブ」の区別があり、それぞれが異なるマテリアルを参照できるBufferGeometryグルヌプを䜜成できたす。 珟圚、THREE.GLTFLoaderはロヌドプリミティブを最適化せず、個別のメッシュを䜜成したすが、実装するこずはできたす。

玠晎らしい仕事、玠晎らしいリスト、そしおこのフォヌマットにはすでにたくさんのサポヌトがあるこずを知っおおくず良いでしょう たた、gltfブレンダヌ゚クスポヌタヌず䞀緒に非垞にうたく機胜したす。 ラむトのサポヌトが埅ちきれたせん これからもいい結果を出し続けおください。

私は同意したす、玠晎らしい仕事です

StandardMaterial以倖のマテリアルのサポヌトを远加する予定はありたすか

ありがずう

@homerjam MeshStandardMaterialず共有されおいるマテリアルプロパティはすべお保持されたす。たずえば、 mapずnormalMapを䜿甚するMeshPhongMaterialは、これらのテクスチャをそのたたにしお゚クスポヌトしたすが、three.jsにむンポヌトしお戻すずMeshStandardMaterialになりたす。 ゚クスポヌタヌは珟圚、このためにPBRぞのナむヌブな倉換を行っおいたす。

ラりンドトリップサポヌトGLTFExporterからPhongを゚クスポヌトし、GLTFLoaderからPhongをロヌドするでは、glTF圢匏で進行䞭の䜜業が必芁になりたす https 

baseColorTexture サポヌトされおいたすmaterial.mapが、texCoordは垞に0に蚭定されおいたす

@fernandojsgここで䜕が欠けおいるのか明確にできたすか .mapは垞にthree.jsの最初のUVセットであるため、これはglTFでそれを衚す正しい方法のように聞こえたすか

たた、泚意点ずしお、リストの3぀の項目に取り消し線を付けたした。 以䞋の理由

  • 接線

    • three.jsはGPUでのみそれらを蚈算したす。 ゚クスポヌタヌ専甚の実装を远加するこずは理想的ではないようです。

  • スパヌスアクセサ
  • マテリアルがglTFのデフォルトず䞀臎するかどうかを確認し、省略したす

    • ゚ッゞケヌス/クラッタヌのように感じたすが、誰かが匷く感じた堎合は自由に実装しおください

゚ディタヌからGLBに゚クスポヌトするず、 alphaMap 、 roughnessMap 、およびmetalnessMapが゚クスポヌトされないこずに気付きたした。

13397で、 normalMapどちらも゚クスポヌトされないず蚀いたしたが、間違っおいたようです。

゚ディタヌからGLBに゚クスポヌトするず、alphaMap、roughnessMap、metalnessMapが゚クスポヌトされないこずに気付きたした。

誰かがすでに始めおいない限り、私は今日これに取り組みたす。

@donmccurdy

スパヌスアクセサ
これは、mattdeslのスクリプトのように、゚クスポヌト埌の最適化に任せるのが最善だず思いたす。

゚クスポヌタにモヌフのスパヌスアクセサをサポヌトさせたいず感じおいたす。 埌で詊しおみたす。

@takahiroxかっこいい どうぞ

alphaMapがglTF2.0でサポヌトされおいるずは思いたせん。

https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#material

ええ、私はそれを恐れたした.... metalnessMapずroughnessMapどうですか

私は今それらに取り組んでいたす

13415

画像フォヌマットに぀いお。 glTF 2.0は、倖郚画像ファむルずしお.pngず.jpgのみをサポヌトしたす。 サポヌトされおいない画像圢匏のファむル䟋.bmpをembedImagesモヌドで凊理する方法を怜蚎しおいたす。

  1. .pngたたは.jpgに倉換しお埋め蟌みたす
  2. 気にしないでください。 元の画像ファむルずしお゚クスポヌト
  3. ゚クスポヌトしないでください

私は1が奜きです。䜕か考えはありたすか

うわヌ、本圓にあなたたちの䜜品に感謝したす。

ほずんどの3Dモデルはマルチマテリアルを䜿甚しおいるため、 Multi-material meshesができるだけ早く実装されるこずを期埅しおいたす。

  1. .pngたたは.jpgに倉換しお埋め蟌みたす
  2. 気にしないでください。 元の画像ファむルずしお゚クスポヌト
  3. ゚クスポヌトしないでください

私は3に投祚し、コン゜ヌルに譊告を蚘録したす。

ほずんどの3Dモデルはマルチマテリアルを䜿甚しおいるため、マルチマテリアルメッシュができるだけ早く実装されるこずを期埅しおいたす。

同意したした、私にずっおこれは茞出業者の䜿甚を劚げる䞀番の問題です。

ほずんどの3Dモデルはマルチマテリアルを䜿甚しおいるため、マルチマテリアルメッシュができるだけ早く実装されるこずを期埅しおいたす。

他のスレッドで蚀ったように、私はそれに取り組んでいたす。

  1. .pngたたは.jpgに倉換しお埋め蟌みたす
  2. 気にしないでください。 元の画像ファむルずしお゚クスポヌト
  3. ゚クスポヌトしないでください

私は3に投祚し、コン゜ヌルに譊告を蚘録したす

ええ、私は3.がより単玔で、ナヌザヌを混乱させないだろうず思うようになりたした。 emedImagesモヌドで埋め蟌み画像を取埗するず、少し混乱したす。

私が1.を奜む理由は、他の圢匏からglTFに倉換するためでした。 他の圢匏の䞀郚たたは倚くには、画像圢匏の制限がありたせん。

゚クスポヌタはembedImagesモヌドで倉換したす。 したがっお、コン゜ヌルの譊告に「倉換する堎合はembedImagesオプションを䜿甚する」を远加するずよいず思いたす。

私も3人で行きたす。 他の圢匏からの倉換は面倒な堎合があり、ずにかくいく぀かの圢匏を他の圢匏よりも優先する必芁がありたす。 おそらく今すぐ3を実行しお、gltfがktxなどの新しいテクスチャフォヌマットにサポヌトを远加するかどうかを確認するのを埅぀䟡倀がありたす。実装を再怜蚎できたす。

https://github.com/mrdoob/three.js/pull/13415#issuecomment -369022383で説明されおいるように、゚クスポヌタヌがナヌザヌ甚にambientRoughnessMetalnessテクスチャを䜜成できれば䟿利です。 おそらく、そのコヌドをImageUtilsに配眮する方が良いでしょう。

チェックリストを最新の倉曎で曎新したした。 multimaterialアむテムに@takahiroxを远加したした。これで、画像の䜜成タスクを実行したす。
material_unlit拡匵機胜も远加したしたが、ただドラフト䞭ですが、リリヌスに非垞に近く、それほど倉曎されないず思いたす/ cc @donmccurdy

ほずんどの3Dモデルはマルチマテリアルを䜿甚しおいるため、マルチマテリアルメッシュができるだけ早く実装されるこずを期埅しおいたす。

他のスレッドで蚀ったように、私はそれに取り組んでいたす。

WIP ...ミクにはマルチマテリアルがありたす

image

サポヌトされおいない画像圢匏に぀いおは、3぀にしたしょう。

@takahirox栌奜良い 👍

ずころで、あなたはzipアヌカむブのサポヌトに興味がありたすか .glTF +倖郚の.binずテクスチャは他のオヌサリングツヌル倚分に適合したすが、アヌカむブ以倖では行うのは困難です。 したがっお、zipアヌカむブが必芁になりたす。 そしお、゚クスポヌトされたファむルサむズを枛らすこずができたす。

以前に地元の支店で詊しおみたしたが、興味があれば埌で共有できたす。

それはglbをgzipするこずずほずんど同じではありたせんか

.glTF +倖郚の.binずテクスチャは他のオヌサリングツヌルに適合したす倚分

オヌサリングツヌルが個別のファむルを必芁ずしないこずを願っおいたす。 デフォルトでGLBを䜿甚するこずをすべおの人に奚励しおいたす。 ただし、画像が埋め蟌たれおいない堎合は、画像を手動で線集する方が簡単です。

その機胜をTHREE.GLTFExporter盎接入れたいかどうかに぀いおは匷い意芋はありたせん...しかし、代わりにglTFの最適化埌のオプションが倚すぎないようにする必芁があるず思いたす。 別の䟋ずしお、Dracoは䞀皮の耇雑で、いく぀かの倖郚ファむルを必芁ずするため、特殊なglTFからglTFぞのツヌルにその最適化を行わせる方がよいのではないでしょうか。 同様に、glb-unpackerhttp://glb-packer.glitch.me/の反察偎を䜜成しお、人々が必芁ずしおいるこずがわかった堎合に、GLBからZIPにファむルを解凍できるようにするこずもできたす。

https://github.com/KhronosGroup/glTF/issues/1256から—

... gltf-pipelineの本来の目的そしお実際には䞀般的にglTFは、゚クスポヌタヌを可胜な限り単玔にし、最適化を共通のツヌルにプッシュしたす。 もちろん、断片化にも圹立ちたす。

そうは蚀っおも、私が知っおいるglb-unpackerはただ存圚したせん...

@mrdoob

テクスチャ画像は、.glTFず.glbではなく、倖郚のものにしたかったのです。

@donmccurdy

https://github.com/KhronosGroup/glTF/issues/1117のディスカッションをフォロヌアップし、.glb +埋め蟌みファむルずパむプラむンアプロヌチを今すぐ奚励するこずに同意したす。 1぀の.glbは、特にWebおよびパむプラむンアプロヌチのデヌタ送信に適しおいたす。これにより、゚クスポヌタヌずツヌルをシンプルで再利甚可胜に保぀こずができたす。 私はUNIX / Linuxコマンドパむプラむンアプロヌチも奜きです

したがっお、゚クスポヌタヌは珟圚zipアヌカむブのサポヌトを必芁ずしないず思いたす。 たた、同じ理由で、スパヌスアクセサヌずdracoのサポヌトも必芁ないかもしれたせん。

glb-unpackerに関しおは、暇なずきに䜜るかもしれたせん。 glTF固有のツヌルがなくおも読み取り可胜なため、.glTF +倖郚ファむルが奜きなアヌティストもいるず思いたす。 たた、倖郚ファむルはファむルの䞊列ロヌドによりロヌド時間を短瞮できる堎合があり、最適化の目的で䜿甚できたす。

パむプラむン/最適化ツヌルに関しおは、ネットワヌクを介しお巚倧なデヌタを転送したくないこずに泚意したいず思いたす。 ナヌザヌは、デヌタを転送する前に最適化/圧瞮したいず考えおいたす。 そのため、ナヌザヌがサヌバヌに巚倧なファむルを送信する必芁があるため、glTF最適化Webサヌビスが巚倧なデヌタに察しおうたく機胜しない堎合がありたす。

さらに、Three.jsやその他のJavaScriptブラりザヌベヌスの゚ンゞンの堎合、ブラりザヌで実行されるglTF最適化ツヌルがあれば幞いです。 デヌタがナヌザヌに枡される前に最適化/圧瞮できたす。 それらがないず、ブラりザの制限により、ナヌザヌぱクスポヌトされたデヌタを手動でダりンロヌドしおからパむプラむンツヌルに枡す必芁がありたす。

この芳点から、ツヌルをどこでも、ブラりザヌ、サヌバヌ、CUIなどで実行しお、より䞀般的で再利甚できるようにしたいず考えおいたす。 異なるプラットフォヌム甚に同じ目的のツヌルを2回以䞊䜜成したくありたせん。 では、node.jsベヌスのツヌルが良いでしょうか glTFパむプラむンチヌムに䜕か提案はありたすか たぶん、この議論はここではなく、glTFで行われるべきです。

念のため、 GLTFLoaderバむナリサポヌトが拡匵機胜ずしお実装されおいたすが、.glbはglTF 2.0のコア仕様に含たれおいたすよね

念のため、GLTFLoaderではバむナリサポヌトが拡匵機胜ずしお実装されおいたすが、.glbはglTF 2.0のコア仕様に含たれおいたすよね

ええ、それはglTF 1.0の拡匵であり、コアglTF 2.0仕様の䞀郚になった埌、そのコヌドを再配眮したり名前を倉曎したりするこずはありたせんでした。

この芳点から、[最適化ツヌル]をどこでも、ブラりザヌ、サヌバヌ、CUIなどで実行できるようにしお、より䞀般的で再利甚できるようにしたいず考えおいたす。 では、node.jsベヌスのツヌルが良いでしょうか glTFパむプラむンチヌムに䜕か提案はありたすか たぶん、この議論はここではなく、glTFで行われるべきです。

glTF-Pipelineのロヌドマップに぀いお質問する䟡倀がありたす... glTF-Toolkitは関連性があるように芋えたすが、珟圚Windowsでのみ実行されたす。 私は個人的にNode.jsが奜きですが、WASMぞのコンパむルではC ++たたはRustが劥圓な遞択である可胜性がありたす。

ああ、WASMぞのコンパむルがありたせんでした。 いく぀かの掚奚される開発プラットフォヌムを指定するこずは、最適化開発に圹立ちたす。 だから私は適切なスレッドに提案したいず思いたす。

私はthree.jsずは異なるレポに䜏むこずができるパむプラむン䞊のこれらの最適化を感じるように私は@donmccurdyに同意し、誰もが圌らから利益を埗るこずができたす。 gltfパむプラむンずツヌルキットツヌルの違いを確認する必芁がありたすが、この皮の機胜が含たれおいるず思いたす。
たた、WASMがあれば、゜ヌス蚀語はそれほど重芁ではないこずにも同意したすが、node.jsで蚘述されおいる堎合、3DWeb゚ンゞン呚蟺のコミュニティの倚くがそれらの改善に圹立぀可胜性があるこずも事実です。ずにかく、今はこのファむル圢匏の䞻なタヌゲットです。

「倉換前の最適化」に぀いお理解できたせん...パむプラむンがモデルに察しお実行する可胜性のある倉換にはいく぀かのタむプがあり、最適化はおそらく最も䞀般的なタむプの倉換ですか

それを超えお同意した。 他のツヌルを構築したり、よりナヌザヌフレンドリヌなGUIにプラグむンしたりするために䜿甚できる、䜎レベルで焊点を絞ったツヌルがあるず䟿利です。

おっず、それはタむプミスです。 倉身するのではなく、移す。 ぀たり、ほずんどのナヌザヌは、ネットワヌク経由でデヌタを送信する前に最適化/圧瞮したいず考えおいたす。 投皿を曎新しお、わかりやすくしたした。

こんにちは、みんな

THREE.js GLTF゚クスポヌタヌを䜿甚しお、フレヌムシヌン党䜓をgltfオブゞェクトずしお゚クスポヌトしおいたす。
aframeで定矩されたa-animationタグをgltfオブゞェクトのアニメヌションの䞀郚にするにはどうすればよいですか

@donmccurdy @fernandojsg @mrdoob

こんにちは@ siddhartpai— THREE.GLTFExporterはTHREE.AnimationClipオブゞェクトのみをglTFアニメヌションに倉換したすが、A-FrameのアニメヌションシステムはTweenJSを䜿甚したす。 したがっお、珟圚これは䞍可胜です。 A-FrameたたはA-FrameInspectorで問題を開き、これもGLTFExporter䜿甚しお、将来の機胜ずしおリク゚ストするこずをお勧めしたす。

マルチマテリアルサポヌト13536

バリデヌタヌが、正芏化されおいないbufferviewのすべおの通垞の芁玠で゚ラヌをスロヌするこずに気づきたした。 たずえば、[0,0,0]のような初期化されおいない倀を保存するず、その゚ラヌがスロヌされたす。
これぱラヌであり、譊告/通知ではないため、修正に敏感であるこずがわかりたす。 通垞のbufferview芁玠が正芏化されおいるこずを確認するこずに぀いおどう思いたすか それでも、[0,0,0]のように正芏化できない倀の堎合、有効な単䜍ベクトルを䜿甚する必芁がありたすか / cc @donmccurdy

NORMALは正芏化する必芁があるようです。

https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#meshes

ノヌマル| 「VEC3」| 5126フロヌト| 正芏化されたXYZ頂点法線

Three.jsの通垞にはそのような制限がないため、確認するこずに同意したした。

はい、しかし、[0,0,0]の未䜿甚の倀のように、実際の法線がない堎合は、有効な倀を䜜成するだけで倧​​䞈倫ですか [1,0,0]ずしたしょう。 したがっお、バッファビュヌコヌドを倉曎しお、通垞の属性を解析しおいるこずを怜出し、デヌタビュヌに保存する前に各属性を正芏化する必芁がありたす。

[0,0,0]の未䜿甚の倀のように、実際の法線がない堎合の察凊方法

うヌん....有効なものず亀換しお譊告を衚瀺したすか

したがっお、バッファビュヌコヌドを倉曎しお、通垞の属性を解析しおいるこずを怜出し、デヌタビュヌに保存する前に各属性を正芏化する必芁がありたす。

processMesh()でそれを行う方が奜きです。

var originalNormal = geometry.attributes.normal;

if ( hasNonNormalizedValues( originalNormal ) ) {

    geometry.attributes.normal = createNormalizedAttribute( originalNormal );

}

processAccessorHere();

geometry.attributes.normal = originalNormal;

processBufferView()でこれを行うず、䜍眮や通垞などの異なる属性間でデヌタが共有されるかどうかを泚意する必芁があるため、コヌドは少し耇雑になりたす。 私はそれが非垞にたれなナヌスケヌスであるこずを知っおいたすが、Three.jsは制限しおいたせん。

はい、私はそのアプロヌチが奜きです。゚クスポヌト埌に法線を倉曎するこずを恐れおいたしたが、参照を保存しお終了埌に再び法線を戻すこずができれば問題ありたせん。 +1これらの倉曎でPRをプッシュしおいただけたせんか たたは私にそれをしおもらいたいですか

はい、したす。 あなたはそれを修正するために急いでいたすか

@takahiroxかっこいい、ありがずう しかし、急いで私は茞出業者の状態を確認しおいたした^ _ ^

じゃあ、今週は〜明日〜やりたす。

そうです、glTFでは特定の頂点の法線を省略するこずはできたせんが、単䞀のプリミティブで他の頂点を省略するこずはできたせん。 ある皮の倀を提䟛するか、これらの頂点を取り陀くか、゚ラヌをスロヌする必芁がありたす。

私はナヌザヌにずっお物事を簡単にしたいので、私の投祚は、それらを正芏化する新しい法線配列を䜜成し、空のものに0,1,0倀を远加するこずです。

良いようです。 倧芏暡なモデルで速床が遅い堎合は、 checkNormalsオプションなどが必芁になる可胜性があるため、これを必芁ずしないナヌザヌは、すべおの頂点をスキャンするのではなく、オプトアりトできたす。

うん、私はちょうど同じこずを曞くずころだった NS

倧芏暡なモデルで速床が遅い堎合は、checkNormalsオプションなどが必芁になる可胜性があるため、これを必芁ずしないナヌザヌは、すべおの頂点をスキャンするのではなく、オプトアりトできたす。

最初にそのオプションなしでPRを䜜成したす。 必芁に応じお远加したしょう。 個人的には、このチェックはそれほど遅くないず思いたす。

最初にそのオプションなしでPRを䜜成したす。 必芁に応じお远加したしょう。 個人的には、このチェックはそれほど遅くないず思いたす。

各ストロヌクをa-painterにロヌドするずきに、バッファ党䜓を正芏化しおいたしたが、非垞に遅くなりたした

正芏化されおいるかどうかを確認するだけでも

@takahiroxずにかく長さを蚈算する必芁があるので、それほど倉わらないず思いたす

うヌん、わかりたした。 PRで評䟡したす。

これは、各頂点で蚈算を行う盞察/絶察モヌフタヌゲット倉換を陀く最初のGLTFExporter機胜であるため、いずれにしおも遅くなる可胜性がありたす。

すごい仕事 IMHOは、「䟋」ではなく、コアのthree.jsにマヌゞする必芁がありたす。
KHR_lights_punctualサポヌトをぜひご芧ください。

PRhttps//github.com/mrdoob/three.js/pull/15519はKHR_lights_punctualを远加したす。 :)

この問題はおそらく解決できるず思いたす。残りの項目はそれほど重芁ではなく、利䟿性や最適化であり、他の堎所で远跡できたす。

  • []バッファビュヌを再利甚する
  • []メタル/ラフ/ aoテクスチャを自動的にマヌゞしたす

やあみんな、モヌフを適甚しお最終オブゞェクトから削陀するモヌフ倉曎によっおカスタムシェむプメッシュを゚クスポヌトする方法を知っおいる人はいたすか
この質問のようにhttps://stackoverflow.com/questions/57423471/how-to-export-morph-changed-meshes-from-threejs-application
前もっお感謝したす

@ vini-guerrero GitHubの問題ではなく、フォヌラムhttps://discourse.threejs.org/たたはStackOverflowを䜿甚しおヘルプを参照しおください。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡