|
楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享," j2 H3 b' f! y4 e1 i5 e
var loader = new THREE.STLLoader();
7 i. ~" X, i. H var group = new THREE.Object3D();
' g q9 S- f$ C( B; k8 E loader.load("../assets/models/a.stl", function (geometry) {' e: H5 @ ~, X8 s$ Y! R* Z
console.log(geometry);
& D H& Z U' K. O9 X) k7 o* r6 p# z7 J3 }/ ~8 o ~
//加载到 mesh5 I" U: e+ X4 `7 r8 {) _
var mat = new THREE.MeshLambertMaterial({color: 0x444444});
, l/ j$ A c8 k2 n% A& } mesh = new THREE.Mesh(geometry, mat);0 w: e2 i p1 i
mesh .rotation.x = -0.5 * Math.PI;
0 a; W9 }5 N! |3 e9 {- G% o, X, k Z mesh .scale.set(0.6, 0.6, 0.6);
& A& ~* \4 V: Y H6 Y% _4 ^# b' e8 C% X/ y3 C/ D5 e" h- g D
//使用 box 生成边界,将物体调整到原点4 z) f2 P8 f5 } r4 r
var box = new THREE.Box3().setFromObject( mesh );. _; ?, C8 u$ _% X
box.center( mesh.position ); // this re-sets the mesh position
3 w7 j1 I/ l, r% y7 \4 t3 s mesh.position.multiplyScalar( - 1 );
7 s; G' Z' Q; O. J: I5 R //将mesh 加到组中
8 ]8 n+ O3 }$ D6 X- X( A group = new THREE.Group();
3 b' J- a3 h) b# y' o* H, h scene.add( group );
' ]; ]" A2 h; t4 t2 q group.add( mesh );! J& t/ s! g& b+ e
( z# S6 _9 b' m //设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置3 [5 [0 ~1 T8 y
group.position.y = -mesh.position.y;( y* |. y e7 z& v0 z h. y
group.position.x = -mesh.position.x;
$ _+ Y' I# I0 L6 f( `# a3 I group.position.z = -mesh.position.z;
& J/ I* w. n/ h5 |! M5 D
2 }/ X" z' e" H }); |
|