gpt4 book ai didi

javascript - ThreeJS 如何更改 PlaneGeometry 上悬停面的颜色

转载 作者:行者123 更新时间:2023-11-28 00:47:05 27 4
gpt4 key购买 nike

我想更改 PlaneGeometry 悬停面的颜色,但我不知道如何获取所选面。这是我的代码:

//THREE.WebGLRenderer 69

// Generating plane
var geometryPlane = new THREE.PlaneGeometry( 100, 100, 20, 10 );

for (var vertIndex = 0; vertIndex < geometryPlane.vertices.length; vertIndex++) {
geometryPlane.vertices[vertIndex].z += Math.random();
}
geometryPlane.dynamic = true;
geometryPlane.computeFaceNormals();
geometryPlane.normalsNeedUpdate = true;
var materialPlane = new THREE.MeshLambertMaterial( {
color: 0xffff00,
side: THREE.DoubleSide,
shading: THREE.FlatShading,
overdraw: 0.5,
vertexColors: THREE.FaceColors
} );
plane = new THREE.Mesh( geometryPlane, materialPlane );
plane.geometry.colorsNeedUpdate = true;

// Mouse event
container[0].addEventListener( 'mousemove', onMouseMove, false );
function onMouseMove( event ) {
var mouseX = ( event.clientX / window.innerWidth ) * 2 - 1;
var mouseY = -( event.clientY / window.innerHeight ) * 2 + 1;

var vector = new THREE.Vector3( mouseX, mouseY, camera.near );
vector.unproject( camera );

raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );

if ( intersects.length > 0 ) {
var INTERSECTED = intersects[ 0 ].object;
for ( var i = 0; i < INTERSECTED.geometry.faces.length; i ++ ) {
// Change the color of all faces
// I want only the hovered one
INTERSECTED.geometry.faces[ i ].color.setHex( Math.random() * 0xffffff );
}
}
}

最佳答案

intersects[0].point 是交点。
intersects[0].face 是相交的面

编辑:并且在您的代码中未调用相交函数:创建了 raycaster 但未使用它。

关于javascript - ThreeJS 如何更改 PlaneGeometry 上悬停面的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248793/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com