web-dev-qa-db-ja.com

three.jsモデルローダーのオブジェクトをjsonファイルに変換する方法

three.jsを使用してブラウザゲームを構築しています。モデルをMaya 2013からシーンにロードします。モデルをobjファイルとしてエクスポートしました。

これをthree.js- loaderのJSファイルに変換する方法を知る必要があります。

これはこれまでのところ私のローダーです:

 var jsonLoader = new THREE.JSONLoader();
 jsonLoader.load( "models/model.js", addModelToScene );

前もって感謝します

16
user2259103

ブレンダーを使用したくない場合は、mrdoob(made threejs)に単純なpython objをjsonに変換するスクリプトがあります。 -this script- を実行するだけです。そのようなターミナルで:

python convert_obj_three.py -i infile.obj -o outfile.js
13
captDaylight

ブレンダーを使用します。

ブレンダー3D

次に、このアドオンをインストールします。

Three.jsエクスポーター

11
Hobbes

それはかなり遅い返事です。 objファイルを読み取り、ThreeJSでサポートされているJSON形式に変換するコンバーターを作成しました: https://github.com/theMaxscriptGuy/Windows_Programs/tree/master/Obj_To_ThreeJS

すべてのファイルをZipとしてダウンロードし、converter.exeを実行します...

6
Videep Mishraa

注:pythonコンバータースクリプトがjsベースのツールに更新されました https://github.com/mrdoob/three.js/tree/dev/utils/converters =

使用法:

node obj2three.js model.obj

6
Karl Rosaen

[convert_obj_three.py][1]スクリプトを使用して3ds maxモデルをthree.jsにエクスポートする場合、cmd promtで次のコマンドを使用すると、ある程度の自動化を実現できます。

cd C:\Python27 &
python convert_obj_three.py -i _obj\chromeBand.obj -o _json\chromeBand.js &
python convert_obj_three.py -i _obj\controlPanelCover.obj -o _json\controlPanelCover.js

複数のモデルのphytonスクリプトコマンドと、モデルの相対URLと座標を含むjsonを出力する3ds maxスクリプトを作成しました。 jsonは、シーン内の正しい位置に複数のモデルを配置するのに役立ちます。

(
local inputPath = "D:\Archive\Work\_Dev\_Convert\Obj\\"
local outputPath = "C:\Server\htdocs\viewer\assets\models\my-project\\"
local jsonPath = "assets/models/my-project/"
local myListEntry = "\n"

for o in selection do
    (
        myListEntry +=
        "\"" + o.name + "\": {\n" +
            "\t\"url\": \"" + jsonPath + o.name + ".js\",\n" +
            "\t\"position\": {\n" +
                "\t\t\"x\": \"" + o.position.x as string + "\",\n" +
                "\t\t\"y\": \"" + o.position.z as string + "\",\n" +
                "\t\t\"z\": \"" + (o.position.y * -1) as string + "\"\n" +
            "\t}\n" +
        "},\n"
    )

myListEntry += "\n\n\n=== Run this using cmd promt: ===\n"
myListEntry += "cd C:\Python27 &\n"

for o in selection do
    (
        myListEntry += "python D:\Archive\Work\_Dev\_Convert\convert_obj_three.py -i " + 
            inputPath + o.name + ".obj -o " + 
            outputPath + o.name + ".js & \n"
    )

myListEntry += "exit \n"
print myListEntry
actionMan.executeAction 0 "40472"
)
  • 新しいtxtファイルを作成し、名前をcoordinates.mcrに変更して、ファイルを3ds maxウィンドウにドラッグアンドドロップします。 MaxScriptリスナーウィンドウが自動的に開き、結果が出力されます。 pythonコマンドをコピーして貼り付けます。印刷されたjsonを使用して、プロジェクト内のモデルをバッチで読み込みます。
  • また、スクリプトを3dsMaxツールバーのボタンに割り当てて、すばやくアクセスできます。
  • 上記のスクリプトでは、さらに微調整を行うことができます。最善の解決策ではありませんが、少なくともそれは物事をスピードアップします。
  • Jos Balcaenのスクリプトを使用して objファイルをバッチでエクスポート (3ds Max)

編集:

スクリプトを少し試した後、モデル(20以上)を1分以内に3ds maxからエクスポートしてブラウザーのタブを開くことができるように設定しました。もちろん、jsonの出力を好みに合わせて調整する必要があるかもしれません。これがお役に立てば幸いです。

3
Adrian Moisa

Pythonという名前のファイルを作成しますconversion.py次のコンテンツを含む: ここをクリックして表示

次に、ターミナルで次のコマンドを実行します。

python conversion.py -i file.obj -o file.js
2
Andy