PLM之家PLMHome-工业软件践行者

[前端框架] Threejs 基于webGL的3D开发神器

[复制链接]

2019-9-1 18:45:09 2790 0

admin 发表于 2019-9-1 18:45:09 |阅读模式

admin 楼主

2019-9-1 18:45:09

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
  N. y9 O) Q" p) y
$ v( N- H' S6 S% O; r
废话不多说,官网自己百度下, threejs.org ,入门很简单。
& q4 B& n/ t4 |& n8 Q# h  ?! B3 [4 J/ L9 h
创建的javascript脚本如下+ B7 I+ w6 _5 q- k2 C5 l

" P& |3 N8 z( ?5 ]$ d; h GIF.gif ) Q4 t* G1 Z6 I: U' W" l) ]: N
[mw_shl_code=javascript,true]
; V' X/ z" ~! W7 |4 zvar scene = new THREE.Scene();
  |' K+ k5 g$ }var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
1 W" ]! F, N3 Z) O7 Jvar renderer = new THREE.WebGLRenderer();
  T) ?, U/ M" D: r8 i2 a9 crenderer.setSize(window.innerWidth, window.innerHeight);3 d  K" W" k5 n7 u4 p
document.body.appendChild(renderer.domElement);
; |& N0 Q2 Q3 b3 e4 N; c2 p6 b* g' z8 V/ t! C' l; C
// Refresh Issue
; i9 @$ m) l- e; qwindow.addEventListener('resize', function () {; ?0 s1 Z9 N) }& l8 D( l. m
    var width = this.window.innerWidth;# b' D1 N: v* R( W8 `% U
    var height = this.window.innerHeight;2 I* ^$ B$ |) \1 L, V( R
    render.setSize(width, height);6 ^% R5 U5 \; I8 ?3 J
    camera.aspect = width / height;
, W/ f* a0 ~/ T* a+ e    camera.updateProjectionMatrix();
  i0 f0 X& d+ G})
2 J) c- A, `# D/ g- P( `+ ^" {1 P5 V/ D. c
//orbit contorls
; l. n1 f2 C7 W+ B3 Wcontrols = new THREE.OrbiTControls(camera,renderer.domElement);
" T0 @0 a$ |+ i0 N' I8 i. C* y4 A" w1 ^( ~5 H9 [
//create the shape- }2 y, R( Z/ U9 p6 R% G2 F+ c
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);$ G- d$ [6 m) i/ K1 e
//create  a meterial( [1 ?8 u! S. V4 W2 z
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
( }+ t1 X  ^7 @9 a% ]//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];' n" b& w5 q7 a: h
//var material = new THREE.MeshFaceMaterial(myMaterial);
1 R% e( ]9 Q3 L  ]9 a0 b$ L% b
% u; s( q( W' w" A/ Qvar cube = new THREE.Mesh(geometry, material);
3 q: K& A  A0 z1 jscene.add(cube);% D2 @9 f; F, c7 ?& a
camera.position.z = 5;% L9 f3 p& C+ C( t" Y
/ b6 O3 I+ G* d- A- l7 ~
( N  r+ N) G' b% s/ Z$ U1 x* ?

, F/ Z5 T) v; ^
& g. A9 q- @: |/ M8 h" l9 K1 j$ r; V  {% p8 W  l3 P8 L
//rotate # ^, c( ]; K, s( u& P: R: x
var update = function () {
1 Z. i1 V( O( a: ]    cube.rotation.x += .01;
  U3 n0 s* i; E' Q2 J9 M2 H/ k    cube.rotation.y += .02;/ Y2 d; F& ~; `
    cube.rotation.z += .02;$ _9 D5 j' ]% `/ j, ]! J, ?2 @9 T
}$ s" J* U/ M% n4 |+ \# K; b! B
2 e' F4 u3 A6 F2 H: B% {
var render = function () {  v+ ]% ]5 f& K$ f
    renderer.render(scene, camera);
$ @8 d; q* R1 P! y% I% J}. l- T; l% g: h/ r7 R

1 G1 D0 X" z- p
- p+ Z4 k  O/ |+ F- [9 C. K, `  F8 D( U
var Gameloop = function () {
, ]. o" o8 x) E& P    requestAnimationFrame(Gameloop);
8 s0 u" M# c, D4 V9 O: [6 U    update();& x" W$ t, n/ u3 ]( w
    render();
0 H0 E* ~4 D- T" M/ B6 |}; ]3 }( y2 x; X2 w
. d/ D# l1 p0 |" H& E4 @" t
Gameloop();3 t, q0 [: I7 W6 }8 e* Z1 r" M  y
[/mw_shl_code]  `$ J0 r/ d3 Z; [4 F) [7 T9 h
: `$ ^/ g* h2 W, e2 b" A+ e* F

/ y- F6 p4 r$ e! Y引入争取的html,
. X* L0 R5 A: i4 l, w) }- l2 u5 R8 j0 b3 @7 y
[mw_shl_code=html,true]<!DOCTYPE html>/ F4 n# K7 k" s) d% m' `
<html>( u* R2 u/ Q. H( _0 S1 c- K
& @- ?  y+ G7 ^
<head>
5 P& @* \- ~% l( m% D    <title>hello ThreeJS</title>+ {3 _0 \3 M- D
    <style>7 H. s( {2 k: M  I2 Y9 |) }
        body {# z" o  k& T/ A* s% u( ]
            margin: 0;* A. f& v' V* b5 Z; l$ [! C. h# {! ?
        }
5 D* L  h0 f( e1 v9 |% ?
. W  M" y7 i% K- [/ [. n        canvas {, ^' q. R- g8 j5 D* z
            width: 100%;5 ^& o2 \# |( `
            height: 100%;
9 u8 i# c% f( l! Y9 r        }
5 z3 b; s' Q* J6 `2 a
* i7 T3 b/ a. K0 W9 \7 E7 l6 B        h1 {, |0 B% h/ }+ V
            color: aqua;
# o5 E+ c( F5 o" g8 t" u' Q9 Z+ Y        }- @4 l0 g* p) V. }# s. L% q5 o7 r
    </style># c' r2 Y# X0 g. ^. A
</head>) H/ W1 @' ^- n6 Z9 f! R8 ^; K1 a
; g$ A! Z$ ~1 a2 t& a! l
<body>
0 Z% ~% C2 X) Z! g( Z. R1 C6 _4 d <script src="js/three.js"></script>
* ?1 z8 Q6 W. b* q- c7 t    <script src="js/OrbitControls.js"></script>
; U. q) H# n! n6 I0 d( J    <script src="myjs.js"></script>  p; I. M, ?8 E# L. y9 G5 g, K
  
, z% N8 ^2 r, R. r! l) v& U" R7 ]/ l8 r7 I
* }  f- M4 i& Q( S6 A; m! P
) d) }+ r1 r3 {; o- n0 C
</body>
" H) ^5 m$ \2 F  d5 t( x
/ H! S: H/ A3 W( z</html>[/mw_shl_code]
: d: B9 r! l% I( w) h
2 }) o% k! X1 }2 d3 @8 D) {  Y效果点击这里:. s2 O- V7 k8 Q: D

1 ?! p. P2 ^7 _8 C6 Uhttp://plmhome.com/doteam/lesson1.html* D2 h4 D  M0 ^

4 O8 g  K( q- d- C* B& O+ |" w  ?. Q+ r! D# w) s
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了