【发布时间】:2018-02-03 16:06:36
【问题描述】:
使用threejs,我可以对我创建的一些网格进行光线投射
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 500 );
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2();
//创建三角形几何体
var material = new THREE.MeshBasicMaterial( { color : 0x00cc00 } );
var geometry = new THREE.Geometry();
geometry.vertices.push( new THREE.Vector3( -0.5, -0.5, 0 ) );
geometry.vertices.push( new THREE.Vector3( 0.5, -0.5, 0 ) );
geometry.vertices.push( new THREE.Vector3( 0.5, 0.5, 0 ) );
//create a new face using vertices 0, 1, 2
var face = new THREE.Face3( 0, 1, 2 );
//add the face to the geometry's faces array
geometry.faces.push( face );
var object1 = new THREE.Mesh( geometry, material );
scene.add( object1 );
camera.position.z = 10;
//获取鼠标位置
function onDocumentMouseMove( event ) {
event.preventDefault();
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
}
//渲染函数
function animate() {
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObject( object1 );
if ( intersects.length > 0 ) console.log( intersects );
renderer.render( scene, camera );
}
//运行
window.addEventListener( 'mousemove', onDocumentMouseMove, false);
window.addEventListener( 'mousemove', animate, false);
animate();
这行代码对我来说效果很好。但我想对这个三角形的索引而不是所有网格进行光线投射。我该怎么办?
我试过 tihs 但它不起作用?为什么?
raycaster.insertObject( object1.geometry.vertices );
【问题讨论】:
-
您可以创建
THREE.Points并对它们进行射线投射。设置积分的方法见this three.js example。 -
嗨@WestLangley 我这样做了,但是当我的鼠标在点附近时会发生交互。我的意思是它不会等待我的鼠标悬停在它们上面。可能是什么问题?
-
可能是this。
-
如果您不能制作API,请不要制作。哎呀
标签: three.js