three.jsについての質問です。あるメッシュを別のメッシュ内に配置し、別のメッシュ内に配置されたメッシュを移動できるようにしたいと考えています。メッシュは JSONLoader を使用してロードされます。1 つは世界であり、もう 1 つはユーザーを表すモデルそのものです。どうすればこれを行うことができますか?問題なく両方のメッシュをロードできますが、ユーザー モデルをワールド モデル内に配置できません。次に、衝突検出を実行して、ユーザーが世界の壁やオブジェクトを通り抜けないようにする必要があります。これの一部に jiblibjs を使用することが提案されましたが、そのライブラリは 1 年以上更新されていません。衝突検出に ammo.js を使用することも提案されました。ただし、それでもメッシュを別のメッシュ内に配置してから移動するという問題は解決されません。
質問する
368 次
1 に答える
0
ユーザーモデル自体も世界も同じスケールだと思います。Object3Dの add() 関数を使用してオブジェクトをネストできますが、エクスポートする階層に注意してください。たとえば、ワールド オブジェクトには空のオブジェクト (ジオメトリを持たない) などが含まれる場合があります。追加は難しい部分ではありません。衝突検出はそうです。
あなたの世界がやや平らな場合 (床が平らで、壁に対する衝突をチェックする必要がある場合は、衝突マップを調べる必要があります。基本的には、たとえば、1 つの色が表すモノクロ イメージとしてレンダリングされた正射投影ビューを使用します。衝突をチェックする領域と、もう一方は衝突不可能な領域を表します。
世界がより複雑な外観をしている場合は、衝突メッシュを見たいと思うかもしれません: 単純化された/非常に低ポリゴンの世界の複製があり、レンダリングはしませんが、衝突をチェックするために使用します。複雑なメッシュの各ポリゴンに対する衝突をチェックするよりも。
もちろん、jiglib/ammo/etc のような剛体ライブラリもあります。ただし、これらの場合でも、レンダリングされていないローポリ メッシュを衝突に使用することを検討する必要があります。
HTH
于 2012-11-16T10:17:18.463 に答える