gpt4 book ai didi

Three.js 更新 TubeGeometry 对象的网格

转载 作者:行者123 更新时间:2023-12-04 19:13:51 27 4
gpt4 key购买 nike

我正在尝试创建一个管子并能够与该管子进行交互,例如拖动鼠标来更改管子的起点/终点。为此,我直接修改顶点位置值,并且我想更新场景中的对象

但是,我遇到了我正在使用的管对象的问题:当我更新路径点时,网格对象不会在屏幕上更新,因此在创建后似乎无法修改它。

我的 3d 对象创建大致是这样的:

var curve = new THREE.SplineCurve3([new THREE.Vector3(x, y, z), new THREE.Vector3(x2, y2, z2)]);
var geometry = new THREE.TubeGeometry(curve, segments, 2, radiusSegments, closed);
geometry.dynamic = true;
var tubeMesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [new THREE.MeshBasicMaterial({color: 0xffffff, opacity: 1, transparent: true})]);
scene.add(tubeMesh);

当我想更新积分时。我是这样做的:
tubeMesh.children[0].geometry.path.points[0] = new THREE.Vector3(x4, y4, z4));
tubeMesh.children[0].geometry.path.points[1] = new THREE.Vector3(x3, y3, z3));
tubeMesh.children[0].geometry.verticesNeedUpdate = true;

但是,当我进行更改时,对象似乎没有在屏幕上更新。用管子可以做到这一点吗?

最佳答案

您只提供了代码片段,但您可能需要

geometry.verticesNeedUpdate = true;


geometry.dynamic = true;

您可以在 Three.js wiki 中找到有关如何使用 WebGLRenderer 更新内容的更多详细信息和示例。 .

https://github.com/mrdoob/three.js/wiki/Updates

关于Three.js 更新 TubeGeometry 对象的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12351281/

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