問題タブ [physijs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2415 参照

javascript - PhysiJS: 回転するオブジェクトの特定の点で線速度を取得する方法

オブジェクトの線形速度と角速度が与えられた場合、PhysiJS のオブジェクトの点の線形速度 (ワールド空間に対する相対速度) を照会するにはどうすればよいですか?

この目的のために、オブジェクトに非表示の頂点を作成することを考えていましたが、API がその機能を提供しているとは思いません。オブジェクトの並進速度と回転速度に基づいて自分で計算する必要がありますか? (もしそうなら、THREE.js または PhysiJS はそれを行う簡単な方法を提供しますか?)

第一原則から:

  • 与えられobject.positionた (1)
  • ワールド空間でのポイントの位置object.localToWorld(point)(2)
  • 与えられobject.getLinearVelocity()た (3)
  • 与えられobject.getAngularVelocity()た (4)

だから私はする必要があります:

  • (2) から (1) を引いて、ワールド空間でのポイントのオフセットを求めます (5)
  • (4) と (5) を使用して、オブジェクトに対する点の線速度を取得します (6)
  • (6) と (3) を追加して、ポイントの総線速度を取得します。

その最初と 3 番目のステップでは、Three.js の Vector3.sub(Vector3).add(Vector3)メソッドを使用できますが、中間の操作は私を避けていますが、一種の乗算だと思います。(4) がオイラー角またはクォータニオンになる可能性がある場合、どのような操作を使用すればよいでしょうか?

行列に関する私の知識は非常に限られており(そして錆びています!)、四元数は存在しません。

Three.js の API ドキュメントはこちら

ありがとう

0 投票する
0 に答える
959 参照

three.js - FPS を落とさずにブロック/ボクセル テレインを効率的に生成しますか?

Three.JS を使用して地形を生成/表示する際に、FPS が大幅に低下することはありません。各ブロックを作成して正しい位置を設定するために私が書いたコードは次のとおりです。

基本的に、各ブロックを作成し、位置を設定THREE.GeometryUtils.mergeし、「チャンク」(長方形) MineCraft スタイルを作成するためにそれらをマージします。

各チャンクを構成する多数の個々のブロックが FPS の低下を引き起こしていると確信しています。チャンクが 10 個しかない場合、FPS は問題ありません。これ以上追加すると、FPS が大幅に低下します。

私が持っていた 1 つの考えは、処理を行うために WebWorker を使用することでしたが、チャンクを追加したり、その中で Three.JS を使用したりすることさえできないため、それは不可能です。これは、私が抱えている FPS の問題ではなく、ロード時間の短縮にも役立ちます。

この問題を解決する方法を誰かが知っていれば、本当に感謝しています。:) カメラが見えないブロックを隠すことは可能でしょうか?または、私はそれを完全に間違った方法で行っているだけかもしれません。ありがとう!

0 投票する
1 に答える
138 参照

javascript - シーンシミュレーションからphysicaljsとthreejsでデータを取得する方法

私はデモに取り組んでいます。このページ ( http://chandlerprall.github.io/Physijs/examples/body.html ) の 1 つの例と非常によく似ています。箱が落ちるだけです。しかし、速度を計算できるように、箱が落下し始めてから地面に着くまでの時間を計算したいと思います。それを行う方法はありますか?? 助けてください。

0 投票する
1 に答える
1060 参照

javascript - Physi.js によるプレイヤーの動き/物理

レンダラーとして Three.js を使用し、物理エンジンとして Physijs を使用して単純なゲームを作成していますが、この質問はゲーム全体に簡単に一般化できます。

ゲームでは、プレイヤーは物理エンジンとは別の物理/動きを持っていることがよくあります。それらは瞬時に加速して動き、瞬時に停止します。ただし、物理エンジンのルールに従って、プレイヤーは高所から落下し、他のオブジェクト (またはプレイヤー) と衝突する可能性があります。

私の問題の目的のために、物理オブジェクトに簡単にアタッチできますが、プレーヤーには物理に拘束されないカメラ オブジェクトがあることに注意してください。

この効果を達成するための最良の方法は何ですか? 私はいくつかの解決策を考えましたが、どれも完全に十分ではないようです:

  1. 物理的なアタッチメントはありません。プレーヤーのカメラを移動します。ただし、これは衝突を無視し、物理エンジンをバイパスします。

  2. 物理的なアタッチメント、および物理的なオブジェクトに力を加えます。ただし、これには摩擦力が伴い、プレイヤーの動きは物理エンジンに翻弄されます。

考え?(同様の質問がありました "、回答はありませんでしたが)

0 投票する
0 に答える
199 参照

three.js - Physijs に頂点シェーダーの変位を考慮させる

タイトルが最高かどうかはわかりませんが、私の問題が何であるかを説明しようと思います。Three.js と Physijs を使って、プレイヤーがフィールドを歩き回る簡単なゲームを作成しています。平面ジオメトリを地面として使用しており、ディスプレイスメント マップを使用して形状を変更したいと考えていました。以前は頂点を直接操作し (いくつかの数式を使用して頂点を変位させました)、衝突検出に HeightfieldMap を使用しましたが、これはうまく機能しましたが、頂点シェーダーを介して変位マッピングを実装したため、Physijs は地面を平らなオブジェクトとして扱います。シェーダーでの頂点の操作は Physijs シミュレーションの後に行われると推測していますが、衝突検出を行うときに Physijs にシェーダーからの頂点の変位を考慮させる方法はありますか? あるいは、

0 投票する
1 に答える
3502 参照

three.js - Threejs/Physijs ゲーム MMO キャラクター コントロール

私は開発中のゲームのサードパーソン キャラクター コントロールに取り組んでいます。これまでの結果に満足しています。キャラクター コントロールには、次のような多くの優れた機能があります。オブジェクトがカメラの前にある場合、オブジェクトは前方に移動するため、キャラクターは引き続き表示されますが、カメラを横に回転させてからプレーヤーを遠ざけると、カメラがひどく途切れますそれから。JSFiddle にテストをアップロードしました: http://jsfiddle.net/nA8SV/これは chrome でしかテストしていませんが、何らかの理由で、そのキャンバスの境界にある空白をクリックするまで、結果部分でキーが押されません。フレーム。

[また、クロスオリジンを無視するために「--disable-web-security」でクロムを開始しました]

ただし、ページをクリックすると、キープレスが機能します。コントロールは軌道コントロールの修正版です。したがって、左クリックしてビューを回転させることができます。さらに、wasd キーを使用して動き回ることができ、移動/回転しているときにカメラ ビューがプレーヤーの後ろに戻る必要があります。

JSFiddleで作業するのが非常に困難であったため、バグが多かったことをお詫びします。(ただし、回転バグが発生しているため、少なくともそれを再現しています。)

基本的に、カメラの回転をキャラクターの後ろに戻そうとしているので、250行目に回転を修正するコードがありますが、キャラクターが動くとカメラが途切れます。

カメラの全体的なぎくしゃく感は、物理シミュレーションがプレーヤーをわずかに跳ね返すことに関係していると思いますが、これを解決するために何をすべきかわかりません。助けていただければ幸いです。

完全を期すためのコードは次のとおりですが、JSFiddle リンクをお勧めします。

ありがとうございました!!!

0 投票する
0 に答える
1391 参照

three.js - Physijs モデルの three.js 衝突が機能しない

モデル (マップ) を JSONLoader でロードすると、衝突の問題が発生します。BoxMesh をロードすると動作しますが、ジオメトリの衝突は立方体のようで、モデルは立方体ではなく、モデルの中央は空です。そして、マップの上部に別のオブジェクト (立方体) を配置しました。このオブジェクトは、マップの内側ではなく上部に停止します。

検索後、モデルを凸面でロードし、オブジェクトが一番上にあり、マップの平面に落ちますが、サイズ (40) が正しくロードされていないと思います。 .

次のようにモデルをロードします。

問題を理解するのが非常に簡単かどうかはわかりません。

BoxMesh: ここでオブジェクトは停止です。 sans titre3

凸: 衝突を検出しない sans 力価

私は自分のテストをアップロードします。おそらく理解する方が良いと思います: http://www.hebergeurfichier.com/download/a97e3ae31c36dfe98525213cde90165f.html

PS: 私はブレンダーでモデルを作成し、three.js エクステンションでエクスポートします。

0 投票する
0 に答える
1153 参照

three.js - Physijs オブジェクトは、concaveMesh を通過します

既知のように思われる問題があります。「境界」オブジェクトが「床」凹メッシュと衝突しません。

この問題は、モデルと一緒に凹型メッシュをスケーリングする際のエラーによって引き起こされる可能性があることを既に読んだので、必要に応じてスケーリングされた床モデルをエクスポートし、凹型メッシュを適用した後 (次のように)、機能しません。

私はこれを赤くしました: https://github.com/chandlerprall/Physijs/issues/102およびこのトピックに関する他の多くのこと ( Physijs ロード モデル three.js 衝突が機能しないなど)、次のコードを作成しましたしかし、何もすることはありません:(

「バウンド」が床を通過する理由がよくわかりません。

ここに私のコード:

これもrender()関数に試しました:

コンソールでは、「境界」と「床」の間の距離を読み取ることができます。これは、床がコライダーとして存在することを意味するはずですが、落下からバウンディングを止めません。なんで?