Three.js: ローダー

作成日 2014年10月28日  ·  66コメント  ·  ソース: mrdoob/three.js

持っておくと便利なローダーのリスト:

3D

Enhancement Loaders

最も参考になるコメント

3dmローダーについて:emscripten( rhino3dm )のおかげでopenNURBSライブラリがwasmにコンパイルされたので、これに取り組み始めました。

私はここでこれに取り組んでおり、メッシュ、ブレップス、押し出し、ポイントクラウド、マテリアル、レイヤー、およびグループのサポートを開始して機能させています。

image

関連ファイル:

いつか_すぐに_、より多くのオブジェクトタイプをサポートするPRを提出したいと思っています。 私はWebワーカーの経験がほとんどなく、 dracobasisloaderの例に頼っていることを認めなければなりません。 うまくいけば、#18234はこれを少し単純化します。

psすでに、ここここのように、rhino3dm.jsライブラリに直接threejsサポートを追加しています。

編集:McNeel組織フォークを指すようにリンクを更新します。

全てのコメント66件

非常に豊富なリスト!
また、AMF(http://en.wikipedia.org/wiki/Additive_Manufacturing_File_Format)ローダーを提案します。
(3D印刷に使用される3Dファイル形式)。
ローダーの基本はすでに完了しているので、少し変更して例に追加することができます。

これらのローダーのほとんどは、エディターなどの特殊なケースではより重要です。たとえば、ゲームの場合、すぐにthree.js形式に変換する方がよい場合があるからです。 これらの場合、コンバーター/エクスポーターがより重要です。

最適化として、3つの形式の代わりとしてglTFをテストしました。データはバイナリであり、geom圧縮で圧縮できます。

Herst [email protected] kirjoitti 2014年10月28日午後5時38分:

これらのローダーのほとんどは、エディターなどの特殊なケースではより重要です。たとえば、ゲームの場合、すぐにthree.js形式に変換する方がよい場合があるからです。 これらの場合、コンバーター/エクスポーターがより重要です。


このメールに直接返信するか、GitHubで表示してください。

@ kaosat-devリストに追加されました!
@Herstはい。 これは主に、高速の読み込み時間を必要としないエディターまたはアプリ向けです。

IGESローダーも探しています。 自分で作り始めるかもしれませんが、どこから始めればいいのかわかりません。

3DMRhinocerosで使用)をリストに追加するのはどうですか?

@nyaaaoが追加されました。 ありがとう!

3DSローダーについて:

みなさん、こんにちは。ずっと前に、3DzzD Web 3Dエンジン用の3DSローダーを作成する必要がありました。これは少し難しいことでした...最初の結果を取得するのは難しくありませんが、すべてのチャンクを正しく処理するのは難しいことではありませんが、しばらくすると私はなんとかかなり効率的なローダーを作ることができました。 3DSファイル形式の仕様を見つけるのは難しいですが、私はかなりうまく機能するものを見つけることができました。 私はこのドキュメントを使用して3DzzDのローダーを構築しましたが、現在のフォトショップのものよりもさらにうまく機能します(ピボット/スムーズグループ/スケール/キーフレームなどのハンドルが優れています...)ので、これが私が使用した仕様です(3DzzDソースコードはオープンソースであり、役立つかもしれませんが、コードは本当に醜いです... 10年前のプロジェクト...)

http://dzzd.net/3DSChunkDefinitions.html

OBJローダーについて:

現在のOBJローダーを変更し、多くの3Dモデルで少なくとも10/15 FPSを取得しましたが、今のところ、これらの変更を投稿する方法がわかりませんでしたか?

この問題は主に、現在のOBJローダーが作成するオブジェクトが多すぎる(元の3Dモデルよりも多く、マテリアルの変更ごとに1つのオブジェクトが作成される)ことと、同じマテリアルの3dFacesが同じオブジェクト内でもグループ化されていないことが原因でした。あまりにも多くのWebGL呼び出しを生成していました

http://dzzd.net/3DSChunkDefinitions.html

ありがとう! 最初の投稿に追加されました。

この問題は主に、現在のOBJローダーが作成するオブジェクトが多すぎる(元の3Dモデルよりも多く、マテリアルの変更ごとに1つのオブジェクトが作成される)ことと、同じマテリアルの3dFacesが同じオブジェクト内でもグループ化されていないことが原因でした。あまりにも多くのWebGL呼び出しを生成していました

ああ! 面白い。 あなたはOBJMTLLoaderのものを意味します。 右?

ああ! 面白い。 ただし、OBJMTLLoaderの1つを意味します。 右?

はい、正確には、「if(/ ^ usemtl /.test(line))」ブロックがマテリアルスイッチごとに新しいオブジェクト/メッシュを作成します。これにより、パフォーマンスが低下し、オブジェクト階層が正しくなくなります。

現在のローダーと変更されたローダーの両方の違いを示す簡単なテストケースを投稿します(違いは主にモバイルデバイスで顕著です)

現在のローダーと最適化されたローダーのテストケースは次のとおりです。

http://demo.dzzd.fr/threejs/OBJMTLLoaderTest/

編集:
現在のローダーでGalaxyTab3で10FPSを取得し、新しいローダーで60 FPSを超えましたが、高速デバイスでは違いがわかりにくい場合があります

PS: 3Dモデルがどこから来たのか疑問に思ったら:)

IGESについて知っている人はいますか。 私は本当にIGESローダーを使うことができました。 誰かが私にそれを構築する方法を始める方向に向けることができたら? または、どこかに1つある場合。 http://www.3dfile.io/や他の3D視覚化サイトのいくつかがThreeJSを使用していて、IGESのアップロードを許可していることに気づきました。

K3D.js(MITライセンス)には、OBJ、3DS、MD2、およびCollada用のパーサーがあります。 http://k3d.ivank.net。 #3843を参照してください。

医者のためのNIfTIはどうですか?

@juglフォーマットについて何か情報はありますか?

.m2モデル、その周りの巨大なコミュニティを本当に望んでいます。 私はモデルファイルなどで私の助けを提供します。あなたはskypeでその場合のために私に連絡することができます:deexone。 あるlib開発者からのヒントとして、 http://bridge.net/を使用して彼のlibをjsに変換することができます。

ねえ、私はBVHファイルを解析し、ミキサーで簡単に使用できるようにTHREE.SkeletonとAnimationClipを出力するBVHローダーを持っています。
https://github.com/herzig/BVHImporter
および実際の例:http: //herzig.github.io/BVHImporter/
これは主にCMUBVHファイルなどでテストされています。

ローダーAPIがどのように見えるべきかについてのガイドラインはありますか?

@herzig Sweet! BVHLoaderは素晴らしいでしょう! ローダーには基本的に.load().parse()があります。 MD2Loaderを参照として使用できますが、現在のPRを実行する場合は、コードをクリーンアップできれば幸いです(例とサンプルアニメーションも大歓迎です)。

やあ、
このリストをリポジトリ内のファイルローダーと同期するだけです...

3MFLoaderがリストにありませんが、すでに実装されています。
BinaryLoaderがリストにありませんが、すでに実装されています。
DDSLoaderはリストにありませんが、すでに実装されています。
FBXLoaderはチェックされていませんが、すでに実装されています。
HDRCubeTextureLoaderがリストにありませんが、すでに実装されています。
MD2Loaderはチェックされていませんが、すでに実装されています。
NRRDLoaderはチェックされていませんが、すでに実装されています。
PCDLLoaderはリストにありませんが、すでに実装されています。
PlayCanvasLoaderはリストにありませんが、すでに実装されています。
RGBLLoaderがリストにありませんが、すでに実装されています。
SVGLoaderはチェックされていませんが、すでに実装されています。
TGALoaderはリストにありませんが、すでに実装されています。
TTFLoaderはリストにありませんが、すでに実装されています。

次:

ASCLoaderをリストに追加する必要があり、PRは数日以内に送信されます。
LASLoaderをリストに追加する必要があり、PRは数日以内に送信されます。
XYZLoaderをリストに追加する必要があり、PRは数日以内に送信されます。

よろしくお願いします、
トリスタン

このリストをリポジトリ内のファイルローダーと同期するだけです...

更新しました!

OpenCTMは、オートデスクがOpenCTMを使用しているため、優れた追加機能となる可能性があります。
クラウドサービス
https://en.m.wikipedia.org/wiki/OpenCTM

2016年11月13日午前6時33分、 Mr.doobnotifications @ github.comは次のように書いています。

このリストをリポジトリ内のファイルローダーと同期するだけです...

更新しました!


このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/mrdoob/three.js/issues/5524#issuecomment -260168120、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AAkmxkkOn179ZJvqc8yScOoxnaDGzuH6ks5q9qE6gaJpZM4CzpFw

@dlabzすでにCTMLoaderがあります。

私はARスペースでいくつかのiOS開発者と協力していますが、ARKitでAppleが使用するバイナリSCNファイルのローダーはありますか? 私はBinaryLoaderの利用に取り組んでおり、それを機能させることができるかどうかを確認します。

そのSCN形式の仕様はどこかにありますか?

@mrdoobすみません、遅刻しました。 NIfTIは、DICOMから転送されたNMRデータ形式です。 私の現在の解決策は、VTK / OBJ形式として3D形状を取得することです。

そうですか。 どこかにスペックはありますか?

IFCローダーはどうですか。 このフォーマットは、その3Dモデルの構築で非常に一般的に使用されています

@mrdoobありがとうございます。

@mrdoob three.jsローダーを構築するためのガイドラインと知識の前提条件は何ですか?
作りたいのですが、必ず正しい方法で作りたいです。 ありがとう

@Aarbelローダーを構築するフォーマットは何ですか?

@ looeee.ifcファイル

ローダーの基本構造は次のようになります。

import {
    FileLoader,
    Loader,
    LoaderUtils
} from '../../../build/three.module.js';

function IFCLoader( manager ) {

    Loader.call( this, manager );

}

IFCLoader.prototype = Object.assign( Object.create( Loader.prototype ), {

    constructor: IFCLoader,

    load: function ( url, onLoad, onProgress, onError ) {

        var scope = this;

        var path = ( this.path !== undefined ) ? this.path : LoaderUtils.extractUrlBase( url );

        var loader = new FileLoader( scope.manager );

        loader.load( url, function ( text ) {

            try {

                scope.parse( text, path, onLoad, onError );

            } catch ( e ) {

                if ( onError !== undefined ) {

                    onError( e );

                } else {

                    throw e;

                }

            }

        }, onProgress, onError );

    },

    parse: function ( text, path, onLoad, onError ) {

        // parsing logic goes here

    }

} );

ありがとう、来月それに取り組む

幸運を! 😊

デフォルトのcrossOriginAnonymousである必要がありますか?

GLTFLoaderColladaLoaderのパターンを再利用しました。

LWOローダーを見たいのですが。
ファイル仕様はここで十分に文書化されています: http ://static.lightwave3d.com/sdk/2018/html/filefmts/lwo3.html

LWOファイルのサイズはOBJの約1/10であることがよくあります。この形式には、モーフデータやOBJでは許可されていない他の多くの機能を含めることができます。 また、NASAが利用できるモデルの多くは、LWO形式のみですhttps://nasa3d.arc.nasa.gov/search/lwo/model

自分が何をしているのかを知っていれば、これを実行しようとしますが、ローダーを作成することは、これまでに行ったことを超えています。

FWIWここにLWOパーサーがあります: https ://github.com/marcbizal/lwo-parser ...仮にそれはローダーまたはコンバーターにとって良いスタートになるでしょうが、残念ながらそれは特定のバージョンをサポートしていないようですNASAが使用しているLWOフォーマットの LWOB(バイナリ?)を想定していますが、私が試したNASAモデルの魔法のバージョン文字列はLWO2でした。 JS以外の言語で記述された動作するパーサーを見つけた場合は、JSで新しいパーサーを作成するよりも、three.jsがサポートするものへのコンバーターを作成する方が簡単な場合があります。

こんにちは、私のスケジュールは大きく変わったので、three.jsの.ifcローダーで作業する時間がありません。 この男の連絡先を取得するのは素晴らしいかもしれません: https ://github.com/mrdoob/three.js/issues/9764

気づかなかったごめんなさい

「LWO2」のローダーを作っていました。 ただ、需要はないと思い、完成しませんでした。

http://adrs2002.com/sandbox/lwoLoader/lwoTest.html
https://github.com/adrs2002/threeLwoLoader

何かお役に立てば幸いです。

みなさん、こんにちは。

M2がリストにあるのを見ました。

キャラクター、オブジェクト、NPC、アイテムビューアをThreeで実現したいので、これは私にとって興味深いことです。

M2に関連して、使用されるDDS S3テクスチャ圧縮と同様の同義のBLP2(Blizzard Picture File)があります。

私はこれまでに見つけました:

.m2 = https://github.com/vjeux/jsWoWModelViewer

.blp

私自身もそれを追加しようとしていますが、それでも全体については少し経験が浅いです:D

@ adrs2002 LWOLoaderは素晴らしいでしょう! あなたが持っているものでPRをしたいですか?

私自身もそれを追加しようとしていますが、それでも全体については少し経験が浅いです:D

時間をかけて👌

LWOLoaderは素晴らしいでしょう!

私は数ヶ月前にLWO3ローダーを作成し、onthez.comで働いていました。
独占期間について合意した後、ここで貢献します。 うまくいけば、2月末頃になるでしょう。

@ jds580sはzのジャスティンだと思います。おそらく、ここにいつ追加できるかについて、彼はより良いアイデアを与えることができます。

@mrdoob @looeee
looeeeのLWO3 loaderがコミットされる場合、 LWO2 loaderのコミットは不要だと思います。
LWO3形式は、LWO2形式のすべての成功が含まれているためです。

LWOLoaderが上陸しました! 😁

16011

IFCローダーの更新はありますか? 建設ビューに最適です!

IFCLoaderとその言い方を試してみました...これは不可能です! IFC形式を正しく解析できるようにするために必要なコード全体は、約650クラスのファイルです。 (私はそれをしたのでそれを知っています)。 ローダーはThreejsライブラリの5倍の大きさになります。

独自の実装が必要な場合の仕様について: http ://standards.buildingsmart.org/IFC/RELEASE/IFC4_1/FINAL/HTML/

私は自分のコードをリリースすることができました、そしてそれに関するいくつかの助けはクールでしょう。 しかし、しばらく前にこのローダーがThreeJsで見られることを期待しないでください...

私は自分のコードをリリースすることができました、そしてそれに関するいくつかの助けはクールでしょう。 しかし、しばらく前にこのローダーがThreeJsで見られることを期待しないでください...

なぜだめですか?

ところで:私は最近同僚と話をしました、そして彼はIFCがCADコミュニティでよく知られているSTEPフォーマットに基づいていると私に言いました。 一般に、STEPは解析が非常に難しく、 VRMLLoaderのようなカスタムパーサーを作成する必要があります。 ただし、IFCファイルはXMLで表現することもできます(拡張子は.ifcxmlです)。 このようなファイルは処理がはるかに簡単であるため( 3MFLoaderまたはColladaLoader )、ローダーは実際のジオメトリデータの構築に集中できます。 たぶん、最初に.ifcxmlのみをサポートするローダーを作成する方が簡単ですか?

@ mrdoob@ Mugen87

なぜだめですか?

なぜなら

ローダーはThreejsライブラリの5倍の大きさになります。

そして私は最新のJavaScript機能でClassを使用しています。

IFCは、CADコミュニティでよく知られているSTEP形式に基づいています。

はい、いつか私がThreejsで何をしているのかをお見せします;)

IFCファイルはXMLで表現することもできます(拡張子は.ifcxmlです)。
..。
たぶん、最初に.ifcxmlのみをサポートするローダーを作成する方が簡単ですか?

構文解析は明らかに大きな問題ではありません。 しかし、ジオメトリの生成は! ifc形式にはジオメトリが含まれていないためです。 ただし、オブジェクト間の補間/相互作用を使用して、最終的なジオメトリを決定します。

とにかく、必要に応じて、決定を下す前に、このための特定のブランチを作成する必要があります。 大きなものを見るためだけに。

ローダーはThreejsライブラリの5倍の大きさになります。

はい、ローダーが他のローダーほどコンパクトでない場合は、コードを別のリポジトリに配置することをお勧めします。

@Itee IFCLOADERをすぐにリリースする予定はありますか?
大きなものを見たいと思います

それを貢献し、それを維持することをいとわない人を知らない...

私はIfcOpenShellのIFCコンバーターをうまく使用しています。これは、優れたジオメトリとマテリアルを作成し、Collada DAE(Unityへのインポートに使用)、IIRC OBJを実行でき、最近はglTFもありました。

私はIfcOpenShellのIFCコンバーターをうまく使用しています。これは、優れたジオメトリとマテリアルを作成し、Collada DAE(Unityへのインポートに使用)、IIRC OBJを実行でき、最近はglTFもありました。

しかし、Buildingstorey、SiteなどのIFCデータを使用していますか?
誰もが扱っているこのくだらないクライアントサーバーではなく、IFCを解析できる方がWebの方が良いことは間違いありません。

最近、これを試してみました。 なんとかジオメトリを生成できました
image

しかし、実際にはこれである必要があります。
image

うまくいかなかった基本的なことは、ここでの実際の配置と回転であり、私の3D数学はほとんど存在しません(私は単に忍耐力がありません)。

IFCスキーマには多くのクラスがありますが。 Typescriptインターフェイスを使用し、関数を使用してファイル内の各「STEP」の引数を検索して適用することにより、最終的なファイルサイズを縮小できます。

結論、IFCローダーの場合。 3D Mathsの天才がいるかどうかはわかりません。これは、ジオメトリを構築する際に数学的な関係を解析する際の多くの問題を解決するためです。

しかし、Buildingstorey、SiteなどのIFCデータを使用していますか?

はい、Tridifyの変換サービスを介して、geomにIfcOpenShellも使用します(私もローカルで使用しました)。 これらのメタデータは解析しやすいものだと思います。

ジオメトリの生成は確かに重要です。 ブラウザで実行したい場合は、IfcOpenShellをWebAssemblyにコンパイルして、Javascriptからライブラリとして使用できます。 これは、GUIなどがないプレーンなC ++であり、コマンドラインインターフェイスが個別に用意されているライブラリだけなので、Web用にも簡単に構築できる可能性があります。 IFCの解析はやや重いので、WASMのパフォーマンスとメモリフットプリントを低くすることは良いことかもしれません。 そして、libはgeomの作成で素晴らしい仕事をします。

@MaartenBreeedveld私は数学を手伝うことができます。理論的には疑いの余地はなく、ifcの経験もあります。実際、世界座標に必要な一連の変換がいくつかある可能性があります。 three.jsでの実装では、おそらくそれを最適化することが可能になるでしょう。

しかし、Buildingstorey、SiteなどのIFCデータを使用していますか?

はい、Tridifyの変換サービスを介して、geomにIfcOpenShellも使用します(私もローカルで使用しました)。 これらのメタデータは解析しやすいものだと思います。

ジオメトリの生成は確かに重要です。 ブラウザで実行したい場合は、IfcOpenShellをWebAssemblyにコンパイルして、Javascriptからライブラリとして使用できます。 これは、GUIなどがないプレーンなC ++であり、コマンドラインインターフェイスが個別に用意されているライブラリだけなので、Web用にも簡単に構築できる可能性があります。 IFCの解析はやや重いので、WASMのパフォーマンスとメモリフットプリントを低くすることは良いことかもしれません。 そして、libはgeomの作成で素晴らしい仕事をします。

私たちは過去にこれを試しました。 しかし、WASMでコンパイルされたバージョンは40MBのダウンロードです。これは、ifcConvertで参照されているすべてのライブラリが原因だと思います。

@Jesusbill 、すごい! 現在、このプロジェクトに取り組む時間がありません。 でも大丈夫ならまた戻ってきます

素晴らしい! 現在、このプロジェクトに取り組む時間がありません。 でも大丈夫ならまた戻ってきます

いいですね@MaartenBreeedveld

リストにVDBLoaderを追加しました。 https://www.openvdb.org/

IFCLOADERについて何かアイデアはありますか? @mrdoob

いいえ

3dmローダーについて:emscripten( rhino3dm )のおかげでopenNURBSライブラリがwasmにコンパイルされたので、これに取り組み始めました。

私はここでこれに取り組んでおり、メッシュ、ブレップス、押し出し、ポイントクラウド、マテリアル、レイヤー、およびグループのサポートを開始して機能させています。

image

関連ファイル:

いつか_すぐに_、より多くのオブジェクトタイプをサポートするPRを提出したいと思っています。 私はWebワーカーの経験がほとんどなく、 dracobasisloaderの例に頼っていることを認めなければなりません。 うまくいけば、#18234はこれを少し単純化します。

psすでに、ここここのように、rhino3dm.jsライブラリに直接threejsサポートを追加しています。

編集:McNeel組織フォークを指すようにリンクを更新します。

これをチェックできます;)
image

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

boyravikumar picture boyravikumar  ·  3コメント

fuzihaofzh picture fuzihaofzh  ·  3コメント

makc picture makc  ·  3コメント

zsitro picture zsitro  ·  3コメント

filharvey picture filharvey  ·  3コメント