如何居中和缩放对象三维
How to center and scale object threejs
我使用以下代码缩放和中心使用ObjectLoader加载的msgpack压缩对象,它不工作。我认为我的对象有一个旋转,因此导致奇怪的行为。在一些对象上,它成功地居中,但在其他对象上,居中偏移和缩放也不正确。
在这个片段中,结果是来自ObjectLoader的场景。我的想法是,这个物体的形状不是很好,但我不确定。我希望图像上的表格或任何其他用户输入的网格位于网格的顶部,居中并缩放,以便最大尺寸为1个单位。
每个正方形测量0.25,轴分别在0,0,0 https://i.stack.imgur.com/fkKYC.png
// result is a threejs scene
var geometry = result.children[0].geometry;
var mesh = result.children[0];
geometry.computeBoundingBox();
var middle = new THREE.Vector3();
middle.x = ( geometry.boundingBox.max.x + geometry.boundingBox.min.x ) / 2;
middle.y = -geometry.boundingBox.min.y;
middle.z = ( geometry.boundingBox.max.z + geometry.boundingBox.min.z ) / 2;
middle.negate();
mesh.position.copy(middle);
// scales the mesh up to maxsize
var maxSize = 1;
// gets the biggest axis
var maxVal = geometry.boundingBox.max.x - geometry.boundingBox.min.x;
if (maxVal < geometry.boundingBox.max.y - geometry.boundingBox.min.y) {
maxVal = geometry.boundingBox.max.y - geometry.boundingBox.min.y;
}
if (maxVal < geometry.boundingBox.max.z - geometry.boundingBox.min.z) {
maxVal = geometry.boundingBox.max.z - geometry.boundingBox.min.z;
// scales the current size proportional to the maxval, times maxsize
mesh.scale.divideScalar(maxVal * maxSize);
self.scene.add(result);
与其调用geometry.computeBoundingBox();
,不如调用geometry.center();
,这样就不需要调用middle.x
或middle.z
了,而只需调用mesh.translateY()
就可以了,根本不用去摆弄middle
相关文章:
- 通过拖动可以更改三维模型对象在Three.js场景中的位置
- 在哪里可以找到可用的开源三维图表
- 如何在three.js中加载指定文件内容而非路径的三维模型
- 创建三维维度数组
- 如何用javascript创建三维数组我想把数据插入数组中,这有助于我的代码
- 使用三个js加载三维模型示例
- CSS三维旋转;不能在Chrome上使用列布局
- JavaScript交互式三维对象
- 二维对象/将数组关联到三维对象Javascript中
- 使用THRE.js通过坐标自定义三维对象
- 在three.js中勾勒出一个三维对象的轮廓
- 渐进地“;揭示“;Three.js中的一个三维对象--我做得对吗
- 从Blender导出的json对象中操作Three.js中的三维
- 如何在HTML中导入和操作三维对象
- 三js对象三维旋转
- 如何居中和缩放对象三维
- 旋转css三维对象;工作不正常
- Three.js-导入带有纹理的三维对象
- 将相机W.R.T三维对象放置在三个.js中
- Javascript三维数组与对象文字