|

楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,
( P; ~/ K3 w! A: q) p/ S# \- \var loader = new THREE.STLLoader();
4 Y. G2 f. i$ S. I, d. v) @3 [3 F var group = new THREE.Object3D();
- E' T' X+ F+ s: Q! {; t" I* ^+ S loader.load("../assets/models/a.stl", function (geometry) {
. d. y% d1 v! V7 w. C8 I: f console.log(geometry);
8 j+ t/ y5 S2 K3 q" C6 ]0 E9 W& }% Z; _! P
//加载到 mesh
2 A. D$ k. Q/ ~! t& V3 _% ^ var mat = new THREE.MeshLambertMaterial({color: 0x444444});
* ^9 T9 P( t( R6 u# X9 J0 d$ K! ] mesh = new THREE.Mesh(geometry, mat);
8 P- R9 v& m! P7 }5 S& A1 c mesh .rotation.x = -0.5 * Math.PI; {# Y8 f2 ^( t4 K
mesh .scale.set(0.6, 0.6, 0.6);
, m8 z! ~0 r0 o5 f3 o% R7 s
x3 S F$ X. k; K1 T/ ]% O //使用 box 生成边界,将物体调整到原点
+ j& G1 K `( c K9 Y& I6 {5 Y var box = new THREE.Box3().setFromObject( mesh );9 D8 n* @1 {# O. G5 }( |' D
box.center( mesh.position ); // this re-sets the mesh position
) i+ ^: ~7 v1 Y) c1 X3 R mesh.position.multiplyScalar( - 1 );5 Q5 s' i& J4 z: V% {
//将mesh 加到组中
0 w5 E* z$ g- r$ p group = new THREE.Group();
" {9 l$ H% V+ Q scene.add( group );
# H) Y6 @! u# ]1 M% z" Y2 _ group.add( mesh );4 {. Q- Y+ o: L8 g, T1 p7 Q- K" y
8 T2 _: s1 U* Y* ?
//设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置
+ i5 F) f' T" b; _8 }2 T group.position.y = -mesh.position.y;' w" Q7 `/ B# ~% N! L9 Z5 k; E
group.position.x = -mesh.position.x;
9 A7 D( d3 r2 a( w+ H group.position.z = -mesh.position.z;
7 {6 Q6 z0 O+ K3 {4 o1 d+ y; L4 ~; H
1 E8 H" g7 F8 E5 ^+ D }); |
|