账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    three.js更新geometry顶点坐标图形不更新问题
    58
    0

    我是用鼠标绘制图形的,在鼠标拖动修改顶点坐标的时候图形不跟随更新?求大牛帮忙?
    这个是我绘制时的函数
    function drawBox(arr) {

            var cubeGeometry = new THREE.Geometry();
            var start = arr[0].clone();
            var end = arr[1].clone();
            var vertices = [
                new THREE.Vector3(end.x, end.y, start.z),
                new THREE.Vector3(start.x, start.y, start.z),
                new THREE.Vector3(start.x, start.y, end.z),
                new THREE.Vector3(end.x, end.y, end.z)
            ]
            cubeGeometry.vertices = vertices;
            var faces = [
                new THREE.Face3(0, 1, 2),
                new THREE.Face3(0, 2, 3)
            ]
            cubeGeometry.faces = faces;
            cubeGeometry.computeFaceNormals();
            var cubeMaterial = new THREE.MeshBasicMaterial({ color: 0x00ffff, wireframe: true });
            var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
            cube.geometry.verticesNeedUpdate = true;
            scene.add(cube);
            currentBox = cube;
        }

    这是我修改顶点坐标时的函数
    function modifyBox(arr) {

            let start = arr[0].clone();
            let end = arr[1].clone();
            var vertices = [
                new THREE.Vector3(end.x, end.y, start.z),
                new THREE.Vector3(start.x, start.y, start.z),
                new THREE.Vector3(start.x, start.y, end.z),
                new THREE.Vector3(end.x, end.y, end.z)
            ]
            currentBox.geometry.verticesNeedUpdate = true;
            currentBox.geometry.vertices = vertices;
            currentBox.geometry.computeVertexNormals()
            var faces = [
                new THREE.Face3(0, 1, 2),
                new THREE.Face3(0, 2, 3)
            ]
            currentBox.geometry.faces = faces;
            currentBox.geometry.computeFaceNormals();
            currentBox.geometry.verticesNeedUpdate = true;
        }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 不灭戾天 普通会员 1楼

      在Three.js中,当尝试更新几何顶点坐标时,图形可能不会立即更新,这可能是由于以下几个原因:

      1. 顶点缓存:Three.js会缓存几何顶点的位置,当几何顶点的坐标发生变化时,这个缓存可能不会更新。要解决这个问题,可以在更新几何顶点坐标时清除缓存。

      2. 物理引擎更新:如果几何顶点在物理引擎中更新,那么更新几何顶点坐标可能需要更长的时间。为了提高性能,可以考虑使用requestAnimationFrame()方法,这样更新几何顶点坐标时,图形会立即更新。

      3. 硬件问题:硬件性能的差异也可能影响几何顶点坐标更新的速度。如果图形在GPU上运行,那么更新几何顶点坐标可能会更快。

      4. 代码错误:代码中的错误也可能影响几何顶点坐标更新的速度。如果你发现几何顶点坐标更新的速度过慢,那么你应该检查代码中的错误。

      解决这个问题的方法可能包括:

      1. 清除几何顶点的缓存。

      2. 使用requestAnimationFrame()方法更新几何顶点坐标。

      3. 尽量提高硬件性能。

      4. 检查代码中的错误。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部