|

楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享, E4 z5 C3 L2 A7 e8 E/ H8 B
var loader = new THREE.STLLoader();+ H% P3 p" V7 W# m7 y# ?
var group = new THREE.Object3D();9 Z8 u" e7 j0 V) I# k- o
loader.load("../assets/models/a.stl", function (geometry) {
9 W! C' c# k7 C9 b, R/ ] console.log(geometry);+ f! k4 q T% a( e' @
: z5 V- B; o* m O: ` //加载到 mesh$ G9 d0 A; ?# i+ x8 s* I3 w. ~. b
var mat = new THREE.MeshLambertMaterial({color: 0x444444});
9 H( B; c4 y% X! U1 ^) @8 v( N mesh = new THREE.Mesh(geometry, mat);
" O, ^* Q$ H* c- v \ mesh .rotation.x = -0.5 * Math.PI;5 g& w/ M4 P- M0 S! |
mesh .scale.set(0.6, 0.6, 0.6);. T- e% @- {) }0 ]% s3 i* v3 m
8 f, t- ^6 @: H2 E8 v: N
//使用 box 生成边界,将物体调整到原点: Q* y! V; e" T+ M2 ]" j) X" n
var box = new THREE.Box3().setFromObject( mesh );3 k0 e) ^: B* r: ~( i5 k
box.center( mesh.position ); // this re-sets the mesh position
5 ?" e1 D# a* g4 Q9 o) @" W mesh.position.multiplyScalar( - 1 );
; X- Y" P0 `* e" v# K2 n9 e6 N# f //将mesh 加到组中
1 j- T, w, @; Y! K; h- u1 W group = new THREE.Group();
D) B- R4 h7 |1 t8 Q; B' ^ scene.add( group );9 ?* [# N/ i5 c3 ^" B. P
group.add( mesh );' K0 z" @# e* y+ i" v* _7 P, L
6 p" w8 g; f! r7 |5 a' u2 d% a5 Y
//设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置 i7 Y+ W4 G8 N3 U+ q, I
group.position.y = -mesh.position.y;8 S* y; U! P" R7 z* V* k
group.position.x = -mesh.position.x;4 n+ J# o1 f8 C( m6 o/ Y) J1 z. F
group.position.z = -mesh.position.z;- @9 s1 v0 ]1 o) b& n3 K
; Y5 L# ~; L; [ }); |
|