古いモデル (ginger demo) を使用して THREE.JS プログラムを作成しました。r44 から r58 にアップグレードした後、python ベースの OBJ -> Three.js コンバーターのバージョン 2 を使用して作成されたモデルを使用できなくなりました。この問題は、ファイルのフォーマットが原因であると想定しています。
私は元の .OBJ モデルを持っていないので、古い json 形式を新しいものにアップグレードしてパーサーが読み取れるようにする方法を見つけようとしています。THREEJS Editor にインポートしてから再度エクスポートすることを検討しましたが、モデルにはモーフィング ターゲットがあり、その手法を使用してそれらを保存することはできませんでした。
アップグレードしようとしている JSON ファイルの例を次に示します。
これまでの進捗状況は次のとおりです。JSONLoader を使用してインポートする場合、最初に表示されるエラーは次のとおりです。
Uncaught SyntaxError: Unexpected token /
これはメタデータのコメントによるものです。そのため、このコンバーター ファイルの 160 行目付近にある形式と一致するように、コメントされたメタデータをメタデータ フィールドに追加しました。また、他のすべての非 JSON コード (変数など) を削除しました。また、「edges」フィールドは空で、.py コードにその文字列が見つからなかったため、削除しました。
json ファイルは正常にロードされましたが、使用すると次のエラーが発生しました。
Uncaught TypeError: Cannot read property 'map' of undefined
Uncaught TypeError: Cannot read property 'attributes' of undefined
「属性」エラーが無期限に繰り返されました。
json ファイルは次のようになります。
{
"metadata": {
"formatVersion" : 2,
"generatedBy" : "OBJConverter",
"vertices" : 168,
"faces" : 144,
"normals" : 576,
"colors" : 0,
"uvs" : 175,
"materials" : 1
},
"scale" : 1000.000000,
"materials": [ {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "phong1SG",
"colorAmbient" : [0.0, 0.0, 0.0],
"colorDiffuse" : [0.8, 0.8, 0.8],
"colorSpecular" : [1.0, 1.0, 1.0],
"illumination" : 4,
"mapDiffuse" : "ginger_color.jpg",
"opticalDensity" : 1.0,
"specularCoef" : 98.0
}],
"vertices": [1900,6776,...],
"morphTargets": [],
"morphColors": [],
"normals": [-0.024569,-0.94821,...],
"colors": [],
"uvs": [[0.37164,0.65357,...]],
"faces": [43,1,...]
}
手動変換のエラーは何ですか? 異なるコンバーターのバージョンから同じデータを使用することさえ可能ですか? これを行うより良い方法はありますか?