|
楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,
$ u9 K& B! V. gvar loader = new THREE.STLLoader();& m3 O" o: H! L) z$ x
var group = new THREE.Object3D();
, I6 f, w9 F4 X loader.load("../assets/models/a.stl", function (geometry) {; ?- Y# e8 ]; W
console.log(geometry);) {4 k& [" [. T' m$ n1 e3 `
9 ?9 u' {) I1 p$ A$ ^9 w7 E' P
//加载到 mesh1 B$ \- x0 S7 L) R1 W
var mat = new THREE.MeshLambertMaterial({color: 0x444444});) V- B5 j% V7 d1 F7 g/ f
mesh = new THREE.Mesh(geometry, mat);; Z c: ^& d) ]& n
mesh .rotation.x = -0.5 * Math.PI;4 g& k. r* L0 k+ x7 R
mesh .scale.set(0.6, 0.6, 0.6);
5 ?" T) G) K, [* x8 J" Z3 U2 R/ G, y ~% L" M
//使用 box 生成边界,将物体调整到原点
; V* N2 ?5 b& }" ~' W var box = new THREE.Box3().setFromObject( mesh );
5 N& M4 G, |& s1 _1 F box.center( mesh.position ); // this re-sets the mesh position4 P' \0 O$ _/ a; j. N
mesh.position.multiplyScalar( - 1 );
" i, _: S* _' R6 s7 W5 G //将mesh 加到组中: k' S" y" Y4 h; f7 g- S
group = new THREE.Group();
6 d+ a& G4 C: `# M7 Z; X; ]: k scene.add( group );
- _; E6 u) B+ Z group.add( mesh );
. _ P+ p1 \% I9 V! N5 t
4 {- @( ]3 z% n p1 J //设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置4 ~# W" n$ \* d" \" @' O8 W
group.position.y = -mesh.position.y;
! E- a% {2 u6 ^, E1 Z group.position.x = -mesh.position.x;6 m. u" F* i7 J: T! F7 g A
group.position.z = -mesh.position.z;- ]8 ~9 o* A7 Z4 ^
7 c% }8 }* X! r }); |
|