针对BufferGeometry线三维的光线投射
Raycasting against BufferGeometry Line threejs
我正试图对BufferGeometry
创建的线进行光线投射。但它似乎不支持光线投射?
当启动BufferGeometry
时,如这里所示,光线投射在这个物体上不起作用。
但是当我用Geometry
代替BufferGeometry
时,光线投射工作良好。
var geometry = new THREE.Geometry();
var lines = new THREE.Object3D();
for ( var i = 0; i <array.length; i++) {
x = ( Math.random() - 0.5 ) * 30;
y = ( Math.random() - 0.5 ) * 30;
z = ( Math.random() - 0.5 ) * 30;
geometry.vertices.push(new THREE.Vector3(x,y,z));
}
var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0x9999FF, opacity: 0.5 } ) );
lines.add(line);
scene.add(lines);
我也试过把BufferGeometry
包装到Object3D
,不影响结果。如何对BufferGeometry
线进行光线投射?
编辑
设置BufferGeometry
我在你的BufferGeometry示例上做了一些工作,现在它可以工作了
http://jsfiddle.net/eviltoad/s9fsds19/11/material.originalColor = material.color;
// line
lines = new THREE.Object3D();
line = new THREE.Line( geometry, material );
lines.add(line);
scene.add(lines);
document.onmousemove = function(event){
mousePosition.x = 2 * (event.clientX / window.innerWidth) - 1;
mousePosition.y = 1 - 2 * ( event.clientY / window.innerHeight);
mousePosition.unproject(camera);
var raycaster = new THREE.Raycaster(camera.position,mousePosition.sub(camera.position).normalize());
console.log(lines.children);
var intersections = raycaster.intersectObjects(lines.children);
console.log(intersections);
lines.children.forEach(function( child ) {
child.material.color = child.material.originalColor;
});
for( var j = 0; j < intersections.length;j++ ) {
var intersection = intersections[j];
var object = intersection.object;
object.material.color = new THREE.Color("#FFFFFF");
}
};
相关文章:
- 光线投射从内部投射时不会碰到网格
- 通过拖动可以更改三维模型对象在Three.js场景中的位置
- 在哪里可以找到可用的开源三维图表
- 如何在three.js中加载指定文件内容而非路径的三维模型
- 无法与光线投射器保持距离
- 创建三维维度数组
- 在BufferGeometry上识别光线投射交点的面
- 如何用javascript创建三维数组我想把数据插入数组中,这有助于我的代码
- 使用三个js加载三维模型示例
- CSS三维旋转;不能在Chrome上使用列布局
- 方向感知三维立方体动画
- 三.光线投射器在缩放的 THREE 中无法正常工作.精灵
- 三.js使用光线投射优化碰撞检测
- 三.js光线投射器没有选择正确的对象
- 请解释三个.js光线投射器方向参数
- 第三.js自定义几何体光线投射器捕获了错误的对象
- 三.js交叉光线投射器
- 三.js 光线投射器在翻页时偏移
- 针对BufferGeometry线三维的光线投射
- 三.在position.set()之后,光线投射器与原始网格位置相交