|
楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,' H2 ]% C- [7 N9 |; d" Z* I
var loader = new THREE.STLLoader();6 y$ [: Q: b1 g6 N) l( S8 | U
var group = new THREE.Object3D();
2 O1 r% w5 U8 | E( i loader.load("../assets/models/a.stl", function (geometry) {( G7 x' y! r- n5 P0 b v
console.log(geometry);6 s# D$ E; |$ A+ Z3 z- Z) ^! O* }
+ b% k; X& r5 D% q* \- { //加载到 mesh2 x( O" s: z7 R- Q; `4 ]& j
var mat = new THREE.MeshLambertMaterial({color: 0x444444});2 \" |9 _6 ~0 ?% m7 u8 ]1 `
mesh = new THREE.Mesh(geometry, mat);3 F0 m) E# U5 ?
mesh .rotation.x = -0.5 * Math.PI;! A: z/ j! _2 V6 K# s8 X" [
mesh .scale.set(0.6, 0.6, 0.6);
* |" C4 I* J7 K: F% |3 i0 B" Z; E; {+ Y/ M
//使用 box 生成边界,将物体调整到原点# Q& |9 t. O" ^2 c* }
var box = new THREE.Box3().setFromObject( mesh );* g9 P n' {4 h
box.center( mesh.position ); // this re-sets the mesh position& X% B; w+ g: B6 V
mesh.position.multiplyScalar( - 1 );
1 d* R1 a3 X: h2 o: p //将mesh 加到组中2 |: F0 [' o3 `8 ^( P! F5 p
group = new THREE.Group();
" o0 z. }1 E5 Y3 z" _7 Y scene.add( group );
# z; O0 o7 x* t8 o9 R, V% W group.add( mesh );- H5 h1 s) |3 W$ y) m
3 b. z. v% n% H8 j
//设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置2 F& K7 R5 K4 L4 v4 r' q
group.position.y = -mesh.position.y;
) W% j/ g2 p! `% D% q2 C group.position.x = -mesh.position.x;, k+ G0 V/ Q. T, s) S
group.position.z = -mesh.position.z;3 ]* u7 I: _+ V6 \( U" {: O0 ]
& u: W: G* t+ T- C8 _% S) E* d }); |
|