Javascript mesh.visible属性仅更新';假';(仅在屏幕上显示)

Javascript mesh.visible属性仅更新';假';(仅在屏幕上显示),javascript,three.js,Javascript,Three.js,我试图不断检查三点编组中每个线网格的两个端点之间的距离是否低于某个阈值 如果在下面,我想显示该行并更新位置 如果超出范围,我想暂时隐藏它。其思想是,当顶点四处浮动时,直线将在靠近时“附着”和“分离” 以下是我的方法示例: function render(){ renderer.render(scene,camera); } function animate(){ requestAnimationFrame( animate ); for(var i = 0; i <

我试图不断检查三点编组中每个线网格的两个端点之间的距离是否低于某个阈值

如果在下面,我想显示该行并更新位置

如果超出范围,我想暂时隐藏它。其思想是,当顶点四处浮动时,直线将在靠近时“附着”和“分离”

以下是我的方法示例:

function render(){
    renderer.render(scene,camera);
}
function animate(){
    requestAnimationFrame( animate );
    for(var i = 0; i < Lines.children.length; i++){
        var line = Lines.children[i];
        var dist = line.geometry.vertices[0].distanceTo( line.geometry.vertices[1] ));
        if( dist < tolerance ){
            line.visible = true;
            updateLineLoc(line);
        } else {
            line.visible = false;
        }
    }
    render();
}
animate();
function render(){
渲染器。渲染(场景、摄影机);
}
函数animate(){
请求动画帧(动画);
对于(变量i=0;i
目前,行“仅”隐藏。当我检查“网格对象可见”属性时,它“从不”更改,但线条变得不可见

如果异步是问题所在,我尝试将更新计算和每帧渲染放在回调中。我已经检查以确保我的循环仍然访问“不可见”的循环,并且我已经三次检查距离计算是否可靠。我试过:

function goodDist( line, callback ){
    line.visible = true;
}
function animate(){
    requestAnimationFrame( animate );
    for(var i = 0; i < Lines.children.length; i++){
        var line = Lines.children[i];
        var dist = line.geometry.vertices[0].distanceTo( line.geometry.vertices[1] ));
        if( dist < tolerance ){
            line.visible = true;
            goodDist( line, updateLineLoc(line) );
        } else {
            line.visible = false;
        }
    }
    render();
}
animate();
函数goodDist(行,回调){
line.visible=true;
}
函数animate(){
请求动画帧(动画);
对于(变量i=0;i
这是:

function render(){
    renderer.render(scene,camera);
}
function checkNear(callback){
    for(var i = 0; i < Lines.children.length; i++){
        var line = Lines.children[i];
        var dist = line.geometry.vertices[0].distanceTo( line.geometry.vertices[1] ));
        if( dist < tolerance ){
            line.visible = true;
            updateLineLoc(line);
        } else {
            line.visible = false;
        }
    }
}
function animate(){
    requestAnimationFrame( animate );
    checkNear(render());
}
animate();
function render(){
渲染器。渲染(场景、摄影机);
}
函数checkNear(回调){
对于(变量i=0;i
这与我的网格不同,因为我的网格根本不会显示,而不是缓慢加载。国家本身似乎没有改变。我似乎找不到更新visible属性的更新标志,但同样,它们正在更新为“关闭”状态(至少在屏幕上)

这里的一个复杂之处是,我对线条使用了自定义着色器材质。我不确定这是否有责任,但它所做的只是在顶点的颜色之间进行插值


请帮忙O

你能在网上发布一个实例吗?调用
updateLineLoc()
时,这听起来类似于顶点缠绕顺序问题,但不确定“线”是真正的
线
对象还是其他类型的几何体。我需要看到它的实际应用才能确定。你能在中发布一个实例吗?调用
updateLineLoc()
时,这听起来类似于顶点缠绕顺序问题,但不确定“线”是真正的
线
对象还是其他类型的几何体。我需要看到它的实际行动才能确定。