gpt4 book ai didi

javascript - Three.js:使用场景对象子集进行光线转换

转载 作者:行者123 更新时间:2023-12-01 01:27:09 25 4
gpt4 key购买 nike

尝试在“地球”对象上转换单个标记。我可以让它读取地球物体,但不知道如何让它只读取标记。我确信这是一个范围问题,但我不确定如何准确解决它。

https://codepen.io/pfbarnet/pen/vQomLK

Earth.prototype.createMarker = function (lat, lon) {
var marker = new Marker();

var latRad = lat * (Math.PI / 180);
var lonRad = -lon * (Math.PI / 180);
var r = this.userData.radius;

marker.position.set(Math.cos(latRad) * Math.cos(lonRad) * r, Math.sin(latRad) * r, Math.cos(latRad) * Math.sin(lonRad) * r);
marker.rotation.set(0.0, -lonRad, latRad - Math.PI * 0.5);

this.add(marker);

};

......

raycaster.setFromCamera( mouse, camera );

var intersects = raycaster.intersectObjects( earth.children );

if ( intersects.length > 0 ) {

if ( INTERSECTED != intersects[ 0 ].marker) {

console.log('hovered');

}

} else {

console.log('not hovered');

}

最佳答案

您可以使用如下模式对场景对象的子集进行光线转换:

var objects = [];

objects.push( marker ); // repeat

var intersects = raycaster.intersectObjects( objects, true ); // recursive true

由于您的情况中的 marker 是一个组,因此请务必将递归标志设置为 true

三.js r.99

关于javascript - Three.js:使用场景对象子集进行光线转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53673577/

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