|
楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,2 N9 f3 X% f. `) U+ _; g9 I2 }
var loader = new THREE.STLLoader();
2 I- k$ x4 S; [# @ var group = new THREE.Object3D();
( ^/ D- l% v( r" h) V* x loader.load("../assets/models/a.stl", function (geometry) {1 z" Y ^, V9 P( U1 o
console.log(geometry);
3 H9 s, K! p! i8 p0 I% W
# Q* K P# q2 q! g# ? //加载到 mesh
: W# k2 L e; ]4 X m var mat = new THREE.MeshLambertMaterial({color: 0x444444});
/ A# L, J; _! h4 W1 c& S mesh = new THREE.Mesh(geometry, mat);
) j# V7 X1 `/ h mesh .rotation.x = -0.5 * Math.PI;
6 R5 {( I$ t* B: v- d3 S, y: x6 ~ mesh .scale.set(0.6, 0.6, 0.6);
b. o: H E, c7 I% E9 Q
7 A: G4 \$ p+ x- _. K) m //使用 box 生成边界,将物体调整到原点9 k- _4 Y: _1 \
var box = new THREE.Box3().setFromObject( mesh );1 G( q6 _4 A9 O: N
box.center( mesh.position ); // this re-sets the mesh position/ _ j* J! d8 D
mesh.position.multiplyScalar( - 1 );0 p! j1 c6 L! s- X0 y2 F4 X
//将mesh 加到组中2 T, p' t0 @/ F+ F
group = new THREE.Group();9 o" c) O7 t$ i2 r% G
scene.add( group );5 ~+ s% u5 h; v4 Z1 ~
group.add( mesh );& P: N3 Z8 |" U* e6 J
$ N) H1 P. s4 S1 v6 x0 f( J- r
//设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置0 b: g' t. y9 H; h! O+ A* A
group.position.y = -mesh.position.y;# z1 m N; v! u% c6 X' f. S! K9 l
group.position.x = -mesh.position.x;' v8 u; N) T, \8 f% r& ~
group.position.z = -mesh.position.z;
8 E$ x( l9 a% K9 X7 f8 f% C( T( c2 t7 d7 b2 i) x
}); |
|