javascript - 如何将立方体网格转换为菱形

标签 javascript three.js mesh

在 three.js 中有没有办法将立方体网格形状变成菱形,比如旋转刻度轴然后缩放它?我正在尝试创建一个扁平的菱形,例如 x50、y50、x10。如果不是,那么创建菱形网格或三 Angular 形网格形状的最佳方法是什么?

如果你只是转动立方体的末端并缩放 x 你仍然会有一个(现在不平衡的)矩形,但是如果你转动它的末端,以某种方式重新调整比例轴的方向,使其从中间延伸点对点,现在你只需挤压带有 x 刻度的立方体,你就会得到一个细腰的漂亮菱形。

为澄清起见,这是我尝试制作的网格形状的图片,理想情况下是左侧的菱形,但三 Angular 形也可以。

Here's a pic of the shape I am trying to make

那么,有什么方法可以旋转刻度轴吗?这就是 new THREE.Matrix4().makeTranslation 的用途吗?我该如何在这种情况下使用它?

See plunker of my attempt here .很明显,我的 cube.scale.x = 0.5; 代码工作,需要移动变换轴。

这是js:

cube = new THREE.Mesh( geometry, material );
                cube.rotation.z = Math.PI / 4 ;
                cube.position.y = 35;
                cube.scale.x = 0.5;
                scene.add( cube );

最佳答案

如果你想把你的立方体或盒子变成菱形,那么最简单的方法是使用像这样的图案来转换你的几何体:

var geometry = new THREE.BoxGeometry( 100, 100, 20 );

geometry.applyMatrix( new THREE.Matrix4().makeRotationZ( Math.PI / 4 ) );
geometry.applyMatrix( new THREE.Matrix4().makeScale( 1, 2, 1 ) ); // optional

创建网格后,您仍然可以选择进一步缩放网格本身。

mesh = new THREE.Mesh( geometry, material );
mesh.scale.set( sz, sy, sz );
scene.add( mesh );

three.js r.71

关于javascript - 如何将立方体网格转换为菱形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32017291/

相关文章:

javascript - jQuery 菜单 - 在调整大小时将一个 div 附加到另一个 div

javascript - phonegap读写json文件

javascript - WordPress JavaScript 错误

javascript - (Three.js) 自定义网格 UV 正确显示纹理

algorithm - 移除闭合网格上的遮挡面

python - Python 中计算科学的网格生成

c# - 程序网格减慢统一场景

javascript - 将服务中的函数绑定(bind)到$scope(错误: Cannot set property 'onChange' of undefined)

three.js - ShaderMaterial 雾参数不起作用

javascript - THREE.js webGL 垃圾回收