我有几个模型(几何),它们都是不同的尺寸和格式
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var materials = new THREE.MeshBasicMaterial({ color: "red"}) ;
var cube = new THREE.Mesh(geometry, materials);
scene.add(cube);
var topy = 'models/JSON/111.json';
var loader = new THREE.ObjectLoader();
loader.load(
topy,
function ( obj ) {
scene.add( obj );
});
var loader = new THREE.TextureLoader();
var normal = loader.load( 'models/3ds/portalgun/textures/normal.jpg' );
var loader = new THREE.TDSLoader( );
loader.setResourcePath( 'models/3ds/portalgun/textures/' );
loader.load( 'models/3ds/portalgun/portalgun.3ds', function ( object ) {
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material.normalMap = normal;
}
} );
scene.add( object );
} );
var loader = new THREE.ThreeMFLoader();
loader.load( 'models/3MF/Mi-24.3mf', function ( object ) {
scene.add( object );
} );
我需要所有模型以相同的尺寸和相同的位置显示
因为我有一个楼层,模型应该显示在中心
var floor_gam = new THREE.PlaneBufferGeometry( 2000, 2000 ) ;
var floor_rotat = - Math.PI / 2;
var mat_standart = new THREE.MeshStandardMaterial( { color: 0x808080, roughness: 0, metalness: 0 } ) ;
var object_floor_standart = new THREE.Mesh( floor_gam, mat_standart );
object_floor_standart.rotation.x = floor_rotat ;
object_floor_standart.receiveShadow = true;
scene.add( object_floor_standart );
谁不知道如何做到这一点?我试过了
var center = obj.geometry.boundingSphere.center;
controls.target.set( center.x, center.y, center.z );
但这并不适用于所有模型,只是将相机调整为模型,反之亦然
这是一个用于将对象拟合到给定尺寸 (
scaleToFit()
) 的函数。在这种情况下,鸭子在 x 轴上的最大尺寸。