|
楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,8 y! O# D- S0 o/ O7 S4 s; V8 N& H4 ^# q
var loader = new THREE.STLLoader();
9 W( H+ I' N' J' q$ I" d var group = new THREE.Object3D();
?' N* X* w) t P# q n: v( g loader.load("../assets/models/a.stl", function (geometry) {
h8 u8 \. L/ u6 c( G0 k7 _ console.log(geometry);; U% _1 Q! z$ \. ] B
/ O1 s/ V4 H( S1 _+ K1 S //加载到 mesh) R3 m c- Y$ B) k) g$ Z
var mat = new THREE.MeshLambertMaterial({color: 0x444444});5 D: _* f, B) G1 k/ W4 h3 y2 w
mesh = new THREE.Mesh(geometry, mat);
! E9 c9 X! a& k2 I2 f mesh .rotation.x = -0.5 * Math.PI;
4 a* N: `; F' P3 K2 | mesh .scale.set(0.6, 0.6, 0.6);' w7 \$ D4 Q4 b) n5 {: h% V+ A
: \3 [& u# t8 T8 _& F7 f4 @4 w' @, J# E //使用 box 生成边界,将物体调整到原点
1 j% B. m" ~! O0 L4 W& ], b var box = new THREE.Box3().setFromObject( mesh );
7 H2 a; [$ x; L: H/ W box.center( mesh.position ); // this re-sets the mesh position
" e$ j% d2 Y* R/ g mesh.position.multiplyScalar( - 1 );4 q, ^3 B5 t$ F" p6 i. u# F
//将mesh 加到组中
4 k! F3 d8 |% t' l2 f! s% ? group = new THREE.Group();' N9 Q. A9 y+ Y, k2 C
scene.add( group );, G0 a: x- T. ^" v6 P& ]
group.add( mesh );
: o; @2 ^" y& O- A! }7 f3 @2 L8 N! d0 E# i5 Y2 K, o0 p# M4 K
//设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置
+ U4 {4 ?, N" |: Q9 I7 X! Q/ \2 ? group.position.y = -mesh.position.y; t7 V0 S6 m" S; f9 N+ R, R
group.position.x = -mesh.position.x;
# {2 X; j( `. V0 C/ H& P group.position.z = -mesh.position.z;
( C E% G) _; w' K3 ~1 [7 K2 D, }$ J. S l+ ^5 S* y, E
}); |
|