Three.js: Facebookビュヌアず互換性のあるGLTFExporterGLB

䜜成日 2018幎02月22日  Â·  56コメント  Â·  ゜ヌス: mrdoob/three.js

FacebookがタむムラむンでglTFのサポヌトを発衚した埌GLTFExporterを䜿甚しおバむナリglTF glb を生成し、この新機胜をテストしようずしおいたす。

しかし、私はこれたでにいく぀かの問題を発芋したした

  • [x] GLBチャンクは4バむトに揃える必芁がありたすhttps://github.com/mrdoob/three.js/pull/13395
  • [x]怜蚌znearずzfarを修正 https 
  • [x]頂点の色FacebookはRGBAのみをサポヌトしたすが、RGBはサポヌトしたせん。 怜蚌メッセヌゞに瀺されおいるように
    [msg] => Vertex COLOR_0 attributes of type RGB are (temporarily) notsupported. They must be RGBA. 。 COLOR_0はvec3たたはvec4あり、 color属性を3぀から4぀のコンポヌネントに匷制的に倉換するオプションのパラメヌタヌを含めるこずができたすが、私はしたせん珟圚の実装は仕様に埓っおいるので、そのハックを行うべきだずは思わない。修正に取り組んでいる間にFacebookバリデヌタヌをハむゞャックする以倖に、その倉換のナヌスケヌスは芋圓たらない。 <-曎新これは次の週に行う必芁があるため、回避する必芁はありたせん
  • [x]むンデックスなしメッシュはサポヌトされおいたせん `[msg] =>むンデックスなしのメッシュプリミティブは䞀時的にサポヌトされおいたせん。
  • []他のプリミティブモヌドを゚クスポヌトしたす珟圚、TRIANGLEのみがサポヌトされおいたす

詳现 https 

Enhancement

最も参考になるコメント

みなさん、今朝の時点で、FacebookはRGBVEC3頂点の色を「無効」ずしお拒吊しなくなりたした。

2の环乗のテクスチャ芁件は今のずころ残っおいたすが、私もそれに取り組んでいたす。

党おのコメント56件

/ ping @zellski

おい ええ、そのRGBAチェックは2週間でなくなるはずです。 それを回避しないでください。 :)

WaltHead.objをglbに倉換しようずしおいたす。 https://threejs.org/editor/にロヌドし、そこからGLBに゚クスポヌトしおい

これがWaltHead.glbで、これがFacebookのバリデヌタヌで取埗しおいるものです。

Your GLB File has the following errors: The 3D model could not be posted: The JSON portion of this model file is invalid.

🀔

構文的に有効なJSONですが、WaltHead.gltfからのこのスニペットのnullは、型スキヌマに準拠しおいたせん。

    {
      "bufferView": 2,
      "componentType": 5126,
      "count": 48480,
      "max": [
        null,
        null
      ],
      "min": [
        null,
        null
      ],
      "type": "VEC2"
    }

Khronos glTFバリデヌタヌツヌルは、ファむル内の他の゚ラヌの玄10,000のむンスタンスも、すべお次の順序で䞀芧衚瀺したす。

        /accessors/2: Accessor element at index 28922 is NaN or Infinity.

したがっお、glTF゚クスポヌト䞭にアクセサヌが生成され、むンデックスで埋められおいるように芋えたすが、実際には䜕も受信しおいたせんか

UVはNaNです🙃

screen shot 2018-02-21 at 9 27 57 pm

@mrdoob @donmccurdyが修正されたした https://github.com/mrdoob/three.js/pull/13400
ただその䟋を瀺すこずはできたせんが

[msg] => Mesh primitives without indices are (temporary) unsupported.

やるこずリストに远加

@zellskiその機胜に぀いお䜕か芋積もりはありたすか ;

@fernandojsgこれは少しトリッキヌです。 修正されたすが、もう少し時間がかかる堎合がありたす。 tl; drたぶん1ヶ月

より長い説明この問題は、クラむアントの実装が遅れおいるずいう点で䞊蚘の頂点の色に䌌おおり、バック゚ンドのバリデヌタヌは、ただ凊理できないモデルからそれらを保護しおいるだけです。

明らかに、むンデックス付けされおいないゞオメトリをサポヌトする必芁がありたす。 理想的にはクラむアント䞊ですが、それたでに、個々のクラむアントのニヌズに応じお、アップロヌドされたすべおの.gltfを遅延/オンデマンドで倉換する完党なDeathStarパワヌたでバック゚ンドコヌドを甚意する必芁がありたす。 その時点で、クラむアントの䟿宜のためにサヌバヌ䞊にむンデックス付きゞオメトリを䜜成するなどのクヌルなこずができたす。

䞊蚘の゚ラヌは、three.jsがランタむム衚珟で自然にむンデックス付けされおいないプリミティブを゚クスポヌトしようずしたずきに発生するず思いたすか

䞊蚘の゚ラヌは、three.jsがランタむム衚珟で自然にむンデックス付けされおいないプリミティブを゚クスポヌトしようずしたずきに発生するず思いたすか

@zellskiそれだけです 3぀にロヌドされた䞀郚のプリミティブたたはオブゞェクトはむンデックス付けされおいたせん。 Facebookのglbロヌダヌの最初のナヌスケヌスは、 A-Painterアプリ詳现https//blog.mozvr.com/tag/a-painter/からの描画を含めるこずであり、そこではむンデックス付けされおいないゞオメトリを䜿甚したすだから、それをサポヌトしおくれるずいいですね;
それがロヌドマップにあるかどうかを知りたかったので、それがそれであり、玄1か月で入手できるこずを知るこずは、合理的以䞊です;その情報を共有しおくれおありがずう

その間にダムむンデックス属性を远加する必芁があるかもしれたせん0、1、2、3、4、5、6、7、8、...のように😕

@mrdoob必芁に応じお、むンデックス付けされおいないものをむンデックス付けされたものに倉換する方法があるずいうこずですか、それずも゚クスポヌタヌに盎接ハックを远加するずいうこずですか

ええ、゚クスポヌタヌに䞀時的なハックを远加したす...

わからない、ただ機胜させたいだけで、人々に「あああなたのモデルはFacebookで機胜しないのですかそれは...むンデックス付きのゞオメトリが䜕であるか知っおいるからですかええ、そうすべきではありたせんが...」

ええ、わかりたした さお、私はいく぀かのそれほど汚くないハックを远加できるかどうかを芋おみたしょう:)

コンテキストの@zellski ..。

このGLTFExporterを䜿甚するExport GLBをhttp://threejs.org/editor/に远加したした。

screen shot 2018-02-22 at 11 03 42 am

ビデオThree.js゚ディタヌでモデルをglTFずしお゚クスポヌトする方法D

https://twitter.com/superhoge/status/966689549803053056

私を信じおください、私はハックを远加するこずに抵抗があるこずを理解しおいたす。 私たちが立ち䞊げた今、患者の芋通しを維持するこずはかなりの苊劎です...

http://threejs.org/editor/で䜿甚されおいるが、他の堎所では䜿甚されおいないフォヌクでGLTFExporterをハッキングできたすか r91がリリヌスされるたでにこの欠陥が修正されるこずを願っおいたす。そのため、泚意深く責任のあるコヌドを䜜成するのは少し無意味に思えたす。

http://threejs.org/editor/で䜿甚されおいるが、他の堎所では䜿甚されおいないフォヌクでGLTFExporterをハッキングできたすか

ええ、心配ありたせん

r91が出るたでにこの欠陥を修正したいず思いたす

ああ、3月1日たでのリリヌスを目指しおいたす。 適切な月のリリヌスがあるように、リリヌスサむクルを月の初めに倉曎したした。

ずにかくこれを宣䌝する前に、ただ远加する機胜がただあるようです。 ラフネス、メタリック、ノヌマル、アルファマップを゚クスポヌトしおいるずは思いたせん。

2぀の拡散マップを䜿甚した最新のテスト。雲の1぀は透明なpngです。
https://www.facebook.com/fakemrdoob/posts/950266411809572

芋かけのalphaTest: 0.5がどこから来おいるのかわからない...

むンデックスの回避策を䜿甚するだけです:)
https://www.facebook.com/fernandojsg/posts/10156405595122044

@mrdoob芋぀けた䞍足しおいる機胜を远加しおもhttps 
そこでステヌタスを曎新する必芁がありたすが😇

いいですね。 ゚クスポヌトしお゚ディタヌにドラッグしお戻したす。
これを閉じる必芁がありたすか

@mrdoob Facebook偎で頂点色のRGBずRGBAの問題が解決されるたで開いたたたにしおおきたす。そのため、人々が助けを求めおここに来るず、別の問題を開く代わりにそれに぀いお読むこずができたす。

ずころで、私はちょうどいく぀かの有甚な情報でこのリンクを芋぀けたした https 

どうやらテクスチャは2の环乗である必芁がありたす...
https://twitter.com/drupalati/status/967486854630055936

Three.jsは、画像を2の环乗から2の环乗にオンザフラむで自動的に倉換したせんか

うん、ごめん。 モバむルクラむアントはただサむズ倉曎されおいないため、怜蚌䞭にしばらくの間拒吊する必芁がありたす。 配信パむプラむンを完党に制埡できるため、サヌバヌでサむズ倉曎を行う可胜性がありたす。 この制限も2〜3週間で解陀されるこずを願っおいたす。

@takahiroxはい、three.jsはその堎でサむズ倉曎されたす。 しかし、Facebookのネむティブクラむアントはthree.jsを䜿甚しおいたせん。

FacebookがただサポヌトしおいないglTF機胜の完党なリストETAの倧たかな順序

  • RGB頂点カラヌはありたせん。 RGBAである必芁がありたす。
  • 特定のクランプ/フィルタヌの組み合わせにNPOTテクスチャがない
  • むンデックス付きの䞉角圢のゞオメトリのみ。
  • アニメヌションなし黙っお無芖
  • スパヌスアクセサヌなし怜蚌に倱敗
  • モヌフタヌゲットがありたせんメッシュに「target」プロパティがある堎合、モデルは怜蚌に倱敗したす
  • カメラなし黙っお無芖今のずころ

たた

  • 最倧ファむルサむズ3MB
  • 4096を超えるテクスチャ寞法はありたせん
  • KHR_material_unlit以倖の拡匵機胜はありたせん珟時点では

それだけだず思いたす。

FBだけでなく䟡倀があるず思うので、フォヌスPOTテクスチャヌ甚にPR13424を䜜りたした。

GLTFExporterを䜿甚しおマルチマテリアルメッシュマテリアルの配列を゚クスポヌトするず、次の゚ラヌが発生したした

GLTFExporter.js:623 Uncaught TypeError: Cannot read property 'toArray' of undefined
    at processMaterial (GLTFExporter.js:623)

@ Ben-Mackこれは既知の問題であり、珟圚取り組んでいたす。 しかし、少し時間がかかりたす。

@zellski fbでのdracoサポヌトの蚈画はありたすか メッシュを40MBから5MBたで䞋げるこずができたすが、最埌の数MBはドロップオフしたせん。

@ webprofusion-chrisc電話のキヌボヌドずしおは長い@はい、Dracoは間違いなくロヌドマップに茉っおいたす。 かなりの゚ンゞニアリング䜜業が必芁なので、少なくずも1か月はかかりたすが、倚くの点で、その呚りに仮定を立おおいたす。倚くのモデルでは、3MBの制限は単玔に受け入れられたせん。 テクスチャで䜕ができるかはただわかりたせん。

テクスチャで䜕ができるかはただわかりたせん。

@donmccurdyはその面でいくらかの進歩を遂げおいたす

12877を䜿甚するず、GLTFExporterから25〜30小さいテクスチャが期埅できたす。

長期的には、BinomialはKhronosず協力しお、glTFでクロスプラットフォヌムの圧瞮テクスチャの拡匵機胜を䜜成しおいたす https //www.khronos.org/blog/call-for-participation-gltf-creating-a-compressed-texture-extension

わかりたした...12877ず13451の埌、以前は3.3MBだったGLB゚クスポヌトが480KBになりたした😊

いいね 13451は、jpgをpngに倉換するず、画像ファむルのサむズが倧きくなるずいう意味ですか

いいね 13451は、jpgをpngに倉換するず、画像ファむルのサむズが倧きくなるずいう意味ですか

はい。 13451は、゚ディタヌが珟時点でテクスチャのフォヌマットを倉曎するこずを蚱可しおいないため、少し回避策です。 しかし、ずにかくラむブラリで同じこずをしたす...

https://github.com/mrdoob/three.js/blob/dev/src/loaders/TextureLoader.js#L34

しかし、はい、 GLTFExpoter珟圚のjpgずしお保存するずきにtexture.format === THREE.RGBFormat 。

https://github.com/mrdoob/three.js/blob/dev/examples/js/exporters/GLTFExporter.js#L493

jpgを再圧瞮しおいるので、これは理想的ではありたせん...しかし、特倧の゚クスポヌトよりも優れおいるず思いたすか

FBX2glTFにコヌドを远加しお、RGBA画像のアルファ倀を実際に怜査する必芁がありたした。これは、人より正確には人のツヌルがデフォルトでアルファ倀を䜜成し、PNGずしお保持する必芁がたったくないためです。 最も残忍なGPU察応の非線圢最適化PNGクランチャヌを詊した埌でも、JPEGがねぐらを本圓に支配しおいるようです...サむズの違いはかなり信じられないほどです

各コンポヌネントが他のコンポヌネントのデヌタから完党に独立したデヌタを運ぶORMテクスチャオクルヌゞョン/ラフネス/メタルのようなもののチャネル間ブリヌドに぀いお少し心配しおいたす...しかし実際にはそれはうたく機胜しおいるようです。

゚クスポヌタは、canvas.toDataURLmimeTypeを䜿甚するずきに品質レベルをオプションにするこずもできたす-私のテクスチャは実行時に合成画像から生成されたす。これも圹立ちたす。

@zellski for fbのパむプラむン/ビュヌアヌsketchfabのように、䜎解像床のテクスチャバヌゞョンを提䟛し、高解像床/フル解像床のテクスチャをストリヌミングしお、ロヌド時にモデルに眮き換えるこずができるず思いたす。 小さな仕事ではありたせんが、実行可胜です。

@ webprofusion-chriscはい、そうするこずになるかもしれたせん。 珟時点では、送信゚ンティティずしお.glbをすべお䜿甚しおいたすが、これを遞択的なLODタむプのストリヌミングず組み合わせるのは困難ですランダムアクセスのないシヌケンシャルファむルが1぀しかないため。 しかし、状況に応じお、基本的な仮定を頻繁に再評䟡するこずを期埅しおいたす。 :)

GLTFExporterは、 BufferGeometryを゚クスポヌトしお、Facebookに正垞にむンポヌトできたす。 ただし、メ゜ッドfromGeometryを䜿甚しお倉換されたGeometryたたはBufferGeometry fromGeometryは、Facebookでは機胜したせん。 私は垞にこれをFBバリデヌタヌで受け取りたす

[msg] =>タむプRGBの頂点COLOR_0属性は䞀時的にサポヌトされおいたせん。 RGBAである必芁がありたす。

再珟する手順

  • 開発の最新のmisc_exporter_gltf䟋を䜿甚するず、Export SphereたたはWaltheadはFBで正垞に機胜したすが、 export Scene1結果はFBにむンポヌトできたせん。

これは予想される動䜜であり、FB偎で埅機する必芁がありたすか

fromGeometryを䜿甚するBufferGeometryは、通垞のBufferGeometryずしお抜出的に機胜するはずです。この問題を解決するための、いく぀かの簡単な修正を教えおください。

@ Ben-Mackこれは、@ zellskiによるず、今埌数週間で修正されるはずhttps://github.com/mrdoob/three.js/issues/13397#issuecomment -367534958

メむンFBアプリのビルド161以降珟圚のApp Storeバヌゞョンは160で、これはクラッシュするこずはなくなり、この怜蚌チェックを削陀したす。 私はこれが䞀週間以内に起こるこずを期埅しおいたす。

@zellskiそれはすごい ありがずう 

でも䞍思議に思う...

THREE.GLTFExporterがTHREE.Geometry゚クスポヌトできない「本圓の」理由は、 THREE.GeometryをTHREE.BufferGeometryに倉換するず、 colorが䜜成されるためです。ほずんどの堎合、れロでいっぱいの属性。

したがっお、1぀の「解決策」および最適化は、 material.vertexColorsがTHREE.NoColors蚭定されおいる堎合、 color属性を゚クスポヌトしないこずです。

Ops私はそれを知りたせんでしたDそれは確かに必須の最適化ですD

@fernandojsg曎新しおいただき、ありがずうございたす。 远加する䟡倀のあるものがさらに2぀ありたす。

  1. マルチマテリアルメッシュのサポヌト。 ゞオメトリにグルヌプがあり、 Mesh.material配列があるもの-珟圚、適切に゚クスポヌトできたせん。
  2. サポヌトされおいる唯䞀のMeshStandardMaterialずFacebookでの結果ずの互換性が向䞊したした。 これたでのずころ、金属面ず拡散面は、three.jsずFacebookではたったく異なっお芋えたす。 たぶん、い぀か特別な「Facebook」の資料があるのでしょうか

ありがずうございたした

@ovこれらは䞡方ずもr91あたりで修正される可胜性が高いず思いたす。

  1. マルチマテリアル゚クスポヌトhttps://github.com/mrdoob/three.js/pull/13536
  2. 金属/粗さの修正https://github.com/mrdoob/three.js/pull/13501

Facebookの資料もただ完党に正しくない可胜性がありたすが、glTFは物事がどのように衚瀺されるかに぀いおかなり具䜓的であるため、最終的には収束する必芁がありたす。

ああ、 KHR_materials_unlitも゚クスポヌトする機胜を远加する必芁がありたす...

線集 https 

THREE.GLTFExporterがTHREE.Geometryを゚クスポヌトできない「本圓の」理由は、THREE.GeometryをTHREE.BufferGeometryに倉換するず、ほずんどの堎合、れロでいっぱいの色属性が䜜成されるためです。

したがっお、1぀の「解決策」および最適化は、material.vertexColorsがTHREE.NoColorsに蚭定されおいる堎合にcolor属性を゚クスポヌトしないこずです。

+1これがすぐに修正されるこずを願っおいたす。 ただTHREE.Geometry基づいお実行しおいるThree.jsのラむブラリがたくさんありたす。

FBはただTHREE.Geometry゚ラヌ...must be RGBAを持っおいたす

@ Ben-Mack、ただゞオメトリを䜿甚しおいるラむブラリを䜿甚しおいたすか おそらく、所有者ず協力しお曎新するこずができたす。

@looeeeこのラむブラリをご芧ください //github.com/a-jie/threejs-geometry-modifiers

みなさん、今朝の時点で、FacebookはRGBVEC3頂点の色を「無効」ずしお拒吊しなくなりたした。

2の环乗のテクスチャ芁件は今のずころ残っおいたすが、私もそれに取り組んでいたす。

@zellski coool :)私はa-painterを完党にサポヌトするこずに非垞に近いですD残りのプリミティブモヌドを実装する蚈画はありたすか 今のずころ、TRIANGLEだけがサポヌトされおいるず思いたす。残りをサポヌトするのは玠晎らしいこずかもしれたせん。たずえば、A-painterでは、スペヌスを節玄するためにTRIANGLE_STRIPを䜿甚しおいたす👌

それらを実装しないのはおかしいでしょう 理想的には、すべおの有効なglTFを受け入れる必芁がありたす。 ただし、その䜜業がどのように優先されるかはわかりたせん。 私たちは小さなチヌムであり、匷い衝動がたくさんありたす。 :)

この問題は解決できるず思いたすか

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