|
3#
樓主 |
發表于 2016-5-12 12:03:47
|
只看該作者
給點核心程序吧。這也是我老師整的。好東西就要分享,
7 }4 O' |" y! B: O2 r- qvar loader = new THREE.STLLoader();
, l% q) L; k4 c) E" { var group = new THREE.Object3D();
% _' ]9 d+ ]' p, _, B loader.load("../assets/models/a.stl", function (geometry) {
6 z% i& d5 a' X a console.log(geometry);
4 H9 [3 |. @7 T8 j/ I: @( W, V, n) @+ I3 s! b$ g* K+ M
//加載到 mesh
+ X; d) t7 b$ z0 [6 { var mat = new THREE.MeshLambertMaterial({color: 0x444444});
7 t/ U0 w. S9 \$ S: D mesh = new THREE.Mesh(geometry, mat);
9 y4 q5 \, L1 ^3 a; {3 V mesh .rotation.x = -0.5 * Math.PI;6 D# X& v) ]+ V4 q2 h: R
mesh .scale.set(0.6, 0.6, 0.6);! B; h' Q. m4 A3 y+ D. m
$ }( `% O( ~* p: x B
//使用 box 生成邊界,將物體調整到原點' j. Y/ X6 {$ [+ Y1 O
var box = new THREE.Box3().setFromObject( mesh );9 |6 Q0 |- u- `- }$ R* d
box.center( mesh.position ); // this re-sets the mesh position+ E- K- P& F' N% P" l1 Z
mesh.position.multiplyScalar( - 1 );
/ M- ]+ y3 J" ~* ?2 F8 ] //將mesh 加到組中
4 u2 F0 E6 k0 b# { group = new THREE.Group();
% z2 ]* s' Z) x& t scene.add( group );* ?- Q2 B. ]8 c+ N9 {! [) E1 a1 Y( y; X
group.add( mesh );
! d& P# c N1 @% ?2 f3 L+ p. `1 `1 S% U, U2 G- ~1 V& e# C
//設置組的坐標為mesh顯示到原點時mesh的中心點坐標取負值,移到加載時的位置
0 e8 e1 j* _4 c' d5 @" q: y0 m. a group.position.y = -mesh.position.y;: k- ?4 J- @. V5 @$ m! i K# n
group.position.x = -mesh.position.x;" U; b8 d, f, C2 N( c
group.position.z = -mesh.position.z;
5 S9 d4 I& u. t7 ~+ p ?7 q9 E+ v( r3 q' a/ o
}); |
|