私が達成しようとしているのは、レーザービームを空間内の2点に接続することです。ThreeJSオブジェクト3d接続2点
おそらくlineGeometry
をレンダリングし、x軸に6つのプレーンを回転させてトリックを行うと考えていましたが、もっと複雑なようです。
これは私がに探しています何
window.lazor = new THREE.Object3D();
var material = new THREE.MeshBasicMaterial({
blending : THREE.AdditiveBlending,
color : 0x4444aa,
side : THREE.DoubleSide,
depthWrite : false,
transparent : true
})
var geometry = new THREE.PlaneBufferGeometry(100, 0.1)
var nPlanes = 3;
for(var i = 0; i < nPlanes; i++){
var mesh = new THREE.Mesh(geometry, material)
mesh.rotation.x = i/nPlanes * Math.PI
lazor.add(mesh);
}
window.lazor.rotation.y = Math.PI/2
とても良いこれまでのところ、私はレーザービームを生成する方法では、2ポイント(Vec3)にobject3Dの両端をレンダリングすることです。
ラインジオメトリは、2番目の頂点をVector3
に更新することで、すべてのフレームに接続する必要があるトリック(長さは常に2点間の距離に等しくなります)と思われますが、私は `Object3D(Object3Dの各端がどこにあるかを調べる方法はわかりません)を使用する必要があります。
を、子供はの一部であるターゲット残念ながらプレイヤーの目標位置によって動き回っているので削除できないグループは、巨大な座標に浮動小数点エラーを修正するためのものです –
拒否する前に5分以上私の答えを考えてください。ターゲットは、レーザーが指すオブジェクトです。また、three.js r85devは大きな座標問題を緩和しました。 – WestLangley
私はコードを実装していて、ターゲットのmatrixworldを取得することで、必要なところでビームをまっすぐに向けることができました。 r85に浮動小数点フィックスが登場するのを知りませんでした(これは素晴らしい)。 しかし、すべてがうまく動作します.. Vec3.lookAt(x、y、z)は高価な操作であるかもしれないと思っていましたが、これまでのところ魅力のように働いています –