|

楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,. _7 \7 _) @9 F: \# _
var loader = new THREE.STLLoader();1 c- J* V& l+ a9 q( A& L3 }8 _3 K
var group = new THREE.Object3D();
0 |" b* `, c: [6 F3 D7 S- h loader.load("../assets/models/a.stl", function (geometry) {3 g* M* T7 S5 Z# A9 e; A
console.log(geometry);
( T$ e' n/ t6 q- Y& ~0 U! J1 u; R9 L( j% o2 P
//加载到 mesh& U- W8 |7 \8 ]& }; r6 P
var mat = new THREE.MeshLambertMaterial({color: 0x444444});3 n; z6 d7 ]$ H/ L i/ r
mesh = new THREE.Mesh(geometry, mat);9 ? O W9 W0 O# }2 b- |2 e
mesh .rotation.x = -0.5 * Math.PI;
# J4 w) p7 q4 O mesh .scale.set(0.6, 0.6, 0.6);
* }2 f2 |2 a8 J- I% p3 K
1 Z( ~+ ?, x$ h, X2 Y; @; I! @ //使用 box 生成边界,将物体调整到原点
3 p1 D3 J1 w0 N- c( e var box = new THREE.Box3().setFromObject( mesh );
3 C' e4 }0 d2 r0 M# | box.center( mesh.position ); // this re-sets the mesh position
5 X: f4 {8 e. s: X mesh.position.multiplyScalar( - 1 );
; T: s. W7 m8 H @, f* K& A; s( l! j //将mesh 加到组中
+ X9 `3 r' y2 G8 C3 x group = new THREE.Group();! Z; N) v. s- p
scene.add( group );# S/ j0 @; R+ h9 |: J S
group.add( mesh );, f1 h0 j5 G0 E0 q
! U6 e/ h6 j. k3 o M
//设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置
- X# ?) `( H) q0 D" P group.position.y = -mesh.position.y; W9 x9 P2 p c) b
group.position.x = -mesh.position.x;+ c, L4 m4 T g# U
group.position.z = -mesh.position.z;
+ S2 x% V6 C% c9 S+ b) h- G! N! h0 k5 k1 M, v$ l% e
}); |
|