javascript - 如何使用键盘拉伸(stretch)和压缩立方体的长宽高?

标签 javascript three.js

调整立方体大小时,一个面不动,其他面改变位置或大小。高度/深度/宽度需要根据键盘进行拉伸(stretch)或压缩。

我建了一个立方体,但是我只能修改立方体的位置

cube.position.y -= 1

但高度、深度、宽度不能改变。

cube.geometry.parameters.height += 1
document.addEventListener("keydown", onDocumentKeyDown, false);
            function onDocumentKeyDown(event) {
                var keyCode = event.which;
                // up
                if (keyCode == 87) {
                    mesh.geometry.parameters.height += 1;
                    // down
                } else if (keyCode == 83) {
                    mesh.position.y -= 1;
                    // left
                } else if (keyCode == 65) {
                    mesh.position.x -= 1;
                    // right
                } else if (keyCode == 68) {
                    mesh.position.x += 1;
                    // space
                } else if (keyCode == 32) {
                    mesh.position.x = 0.0;
                    mesh.position.y = 0.0;
                }
                render();
            };

想要的效果如下图: http://product-cdn-tagging.oss-cn-beijing.aliyuncs.com/test/3d.gif

最佳答案

修改 parameters 属性在创建几何后没有效果。如果你想改变立方体的宽度、高度或深度,请使用 Object3D.scale反而。下面的 fiddle 演示了这种方法。

https://jsfiddle.net/xovwfe8t/

Object3D.positionObject3D.rotationObject3D.scale 表示 3D 对象的局部变换。如果您想在 3D 空间中应用转换,这些属性应该是您的主要界面。

three.js R 104

关于javascript - 如何使用键盘拉伸(stretch)和压缩立方体的长宽高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56181462/

相关文章:

javascript - 当 DOM 元素位于场景上时,THREE.JS OrbitControls 不起作用

three.js - 如何将另一个场景对象附加到我的动画导入的 Collada 网格?

three.js - Threejs 如何为圆柱体的顶面指定不同的颜色?

javascript - 在 three.js 中围绕球体(模拟太阳)旋转矢量

php - 如果我将 lat、lng 作为变量传递, map 会中断

javascript - 是否可以获取元素的 css?

javascript - 谁能解释 getBoundingClientRect() 的奇怪对象行为?

javascript - 调整Android WebView的字体大小

javascript - 使用嵌套 View 时 Controller 未注册

javascript - 纹理不随对象旋转