|
楼主 |
发表于 2016-5-12 12:03:47
|
显示全部楼层
给点核心程序吧。这也是我老师整的。好东西就要分享,
5 Q/ d r! y9 ?2 bvar loader = new THREE.STLLoader();
* v; y1 L% A. U- M, \! J8 l var group = new THREE.Object3D();% y) ~ L+ C# Z) H1 y
loader.load("../assets/models/a.stl", function (geometry) {
' B5 [4 a" U0 k( G console.log(geometry);1 {$ V3 k5 ]8 `3 j# J" t
2 V) i) d/ s& I" e# @/ v4 @. {' a //加载到 mesh# S* n2 ]- m0 n6 E( ?+ u( h
var mat = new THREE.MeshLambertMaterial({color: 0x444444});4 W: K! p4 B2 i8 {
mesh = new THREE.Mesh(geometry, mat);
6 l1 K5 P) E$ O8 b0 [# P K2 Y mesh .rotation.x = -0.5 * Math.PI;
. b4 r) d/ g5 @+ g$ k* w2 z- R$ _ mesh .scale.set(0.6, 0.6, 0.6);
4 F0 ~: r2 \/ {3 O
* K& H+ r0 S. A& s7 L. x0 h0 E //使用 box 生成边界,将物体调整到原点
% C4 {& G0 C# L6 d" s v1 L# {1 ] var box = new THREE.Box3().setFromObject( mesh );
6 W6 d) u( g2 D. Q7 f3 u box.center( mesh.position ); // this re-sets the mesh position4 F* A8 U; E7 o+ m' I
mesh.position.multiplyScalar( - 1 );" m4 `. l' |# O. l3 _! ~6 s% {
//将mesh 加到组中& F3 Q( M) a( j
group = new THREE.Group();
. D4 i1 j* t) { {7 u' F scene.add( group );/ j! u$ e, C- S
group.add( mesh );
8 g( n* K5 n" b+ E5 {0 s0 \" J2 s
|9 `9 C$ H! q" R/ [ //设置组的坐标为mesh显示到原点时mesh的中心点坐标取负值,移到加载时的位置 J8 Q: d$ C! w C) s# ~
group.position.y = -mesh.position.y;
' {, [$ x) N" k# P- i+ S* v/ {$ D group.position.x = -mesh.position.x;
& b8 i. n! W, u$ E7 _4 X group.position.z = -mesh.position.z;
& t Y, y7 a& Y. b; t1 }, P6 e3 H/ D1 A9 m; |! A, K4 u/ L- p6 R
}); |
|