【问题标题】:why three.js updates geometry only when new geometry is defined?为什么three.js仅在定义新几何时才更新几何?
【发布时间】:2021-05-17 01:36:06
【问题描述】:

我有一个关于使用 dat.gui 在three.js 中更新几何的问题。

我希望我可以通过按如下对象更新绑定到几何图形的值来更新几何图形。

gui.add(parameter, 'width')
    .min(1)
    .max(10)
    .step(0.1)
    .name('cubeWidth')
    .onChange((value) => {
        mesh.geometry.dispose();

        geometry.parameters.width = parameter.width
        console.log(mesh)

    })

但是,只有当我像下面这样重新定义几何图形时,它才会更新几何图形。

mesh.geometry = new THREE.BoxGeometry(parameter.width, 1, 1);

这对我来说有点奇怪,因为即使我记录了几何数据,它们都显示了更新后的宽度值,如下所示。

为什么只有第一种方法有效,而另一种方法无效?

【问题讨论】:

  • 最好这样做,而不是:stackoverflow.com/questions/35850419/…
  • @WestLangley 我以前使用过这种方法,但只是想找出另一种改变形状的方法。导致更改比例适用于某些情况,而不是所有情况。不是吗?
  • 它适用于您提出的案例。

标签: three.js dat.gui


【解决方案1】:

geometry.parameters.width = parameter.width

这没有效果。只有在创建几何图形时才会处理参数。 parameters 属性实际上是只读的。

您的问题的解决方案确实是使用新的参数集重新创建几何。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2017-07-02
    • 2019-06-22
    • 1970-01-01
    • 2018-08-19
    • 2013-04-11
    相关资源
    最近更新 更多