Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js ThreeJS–;通过与另一个对象相交来显示一个对象的方式_Three.js_Intersection_Onmouseover - Fatal编程技术网

Three.js ThreeJS–;通过与另一个对象相交来显示一个对象的方式

Three.js ThreeJS–;通过与另一个对象相交来显示一个对象的方式,three.js,intersection,onmouseover,Three.js,Intersection,Onmouseover,我尝试编写一个ThreeJS交互,其中用户将鼠标悬停在一个球体上,并显示一个连接的文本对象。问题是显示具有相交球体的连接文本对象,以便每个球体显示其自己的文本 现在我只能为每个相交的球体显示相同的文本对象。我认为raycast部分中缺少一些代码来选择正确的文本对象 //create textObjects and add to scene var selectTitles = []; for (var i = 0; i < numSpheres; i++) { var title

我尝试编写一个ThreeJS交互,其中用户将鼠标悬停在一个球体上,并显示一个连接的文本对象。问题是显示具有相交球体的连接文本对象,以便每个球体显示其自己的文本

现在我只能为每个相交的球体显示相同的文本对象。我认为raycast部分中缺少一些代码来选择正确的文本对象

//create textObjects and add to scene
var selectTitles = [];

for (var i = 0; i < numSpheres; i++) {
    var title = 'Title '+i;
    var textGeom = new THREE.TextGeometry( title, {size: 0.5,height: 0});
    var textMaterial = new THREE.MeshBasicMaterial({color:0x334455,transparent: true, opacity: 0});
    var titles = new THREE.Mesh( textGeom, textMaterial );

    group.add( titles );
    titles = selectTitles[i];
}

//onMouseOver
if (intersects[0].object != INTERSECTED) {
   INTERSECTED = intersects[0].object;

   // here 'titles' doesn't pick different text objects because of the missing 'intersected' connection

   new TWEEN.Tween(titles.material).to({opacity:1},350)
   .easing(TWEEN.Easing.Bounce.EaseOut).start();            
}
//创建文本对象并添加到场景中
var-selectTitles=[];
对于(变量i=0;i
我建议您遵循相同的顺序,就像网站threejs.org上的示例一样:

// global variables
var camera;
var scene;
...

window.onload = function() {
    init();
    render(); //final output    
}

function init() {
...
}

function render() {
...
}

我冒昧地修改了你的密码。这是你的电话号码。代码。

如果很难,使用EventControls看起来不错,但它真的解决了我的问题吗?我不悬停文本对象,而是球体。通过悬停球体,应显示指定的文本对象。对我来说,EventControls似乎是我实际工作的另一种方式。也许你可以证明我错了…@AlmazVildanov:我实现了事件控制,但它并不完美。是否存在始终预选项目0的原因?这是我的代码:
EventsControls.attachEvent('mouseOver',function(){console.log(This.event.item+'为select');})
for(var i=0;i
eventsControl.attachEvent('mouseOver',function(){var item=this.event.item;selectTitles[item].visible=true;})工作得很漂亮,但现在我在重新创建网格时遇到了一个问题。网格消失后,我希望它生成全新的网格,但正如您在这里看到的,它的工作方式与我的旧脚本不同,因为现在onclick函数位于init函数中,所以我不能将其称为:D任何想法?这就是它现在的样子:下面是代码
EventsControls.detach(mesh);EventsControl.attach(newMesh)