为多个几何图形设置单独的位置,然后合并这些几何图形

问题描述 投票:0回答:2
import * as THREE from 'three';
import * as BufferGeometryUtils from 'three/addons/utils/BufferGeometryUtils.js';

const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 75, innerWidth / innerHeight, 0.1, 1000 );

camera.position.z = 10; 


// create material and 2 sphere:
const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ); 
const sphere_geo1 = new THREE.SphereGeometry( 2, 32, 32 ); 
// sphere_geo1.setAttribute('position', new THREE.BufferAttribute( new Float32Array([-5,0,0]), 3));
const sphere_geo2 = new THREE.SphereGeometry( 2, 32, 32 ); 
 
// merge spheres and add merged to scene:
var merged_geo = BufferGeometryUtils.mergeGeometries([sphere_geo1, sphere_geo2], false);
const merged = new THREE.Mesh( merged_geo, material );  
scene.add(merged);

在合并之前,我尝试将位置设置为第一个球体(例如

x=-5
),并用于此
setAttribute('position')
,但如果取消注释该行,
sphere_geo1
似乎不会出现在该位置。我做错了什么?

我用r161

javascript three.js
2个回答
0
投票

您需要遍历所有顶点才能改变位置。 检查此线程 - Three.js update boxGeometry 的网格位置属性。 我想这就是你所寻找的。因为球体几何会有很多三角形,你需要在 X 方向移动每个三角形。


0
投票

如果通过

setAttribute('position'...)
设置几何体的位置,这在合并几何体中可能会出现问题。

尝试使用

translate
方法,然后移动整个几何体:

sphere_geo1.translate(-5, 0, 0);
© www.soinside.com 2019 - 2024. All rights reserved.