|
|
楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,7 J- r5 C& M6 z- y9 C: B
var loader = new THREE.STLLoader();
0 w. r5 S/ H8 I6 T+ E var group = new THREE.Object3D();4 i0 o5 F# O1 Q
loader.load("../assets/models/a.stl", function (geometry) {
& V7 q8 V# F5 X) m* d0 x, l2 m( Y console.log(geometry);
" V2 v" R7 K6 K; r' w
8 F) C; X6 G" T7 ]5 T2 V //加载到 mesh& x# B' R& R* D* U! j
var mat = new THREE.MeshLambertMaterial({color: 0x444444});
3 K; o9 D% x& G; e mesh = new THREE.Mesh(geometry, mat);
9 G) K; J1 j$ \8 h! n5 ~) Y mesh .rotation.x = -0.5 * Math.PI;; ]# c; _2 v2 @
mesh .scale.set(0.6, 0.6, 0.6);
- f7 P* h7 W; U! x. X/ m9 n# P! J- O7 ~8 t
//使用 box 生成边界,将物体调整到原点
- Y; N |6 Y+ j& J ]0 ` var box = new THREE.Box3().setFromObject( mesh );
6 \. O- W7 u4 K9 B& Z+ ~ box.center( mesh.position ); // this re-sets the mesh position" u) \, R5 d! S( _ Z7 k$ \) K/ t+ F' s: u
mesh.position.multiplyScalar( - 1 );, O$ B; j Y- ]/ R
//将mesh 加到组中7 v: J! ^; v0 D/ q: M5 l: F' p* {% I
group = new THREE.Group();
& V) a$ F a$ m+ h$ K scene.add( group );8 E0 H+ \1 v( i8 D# }5 |
group.add( mesh );
# S J. s, p$ N) y, P1 [; `
7 ?! q* F" [5 w/ {) m( j' J* X //设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置
6 x0 B7 B+ D1 Q group.position.y = -mesh.position.y;
5 d( \# j6 @6 q& c7 F5 j9 H group.position.x = -mesh.position.x;# b1 }, X2 v- p, E% I( U
group.position.z = -mesh.position.z;
7 q. S' g* z7 V" O. y6 z N
) h9 _% V; a; R9 ^; s5 N5 Q6 x4 D% B }); |
|