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

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

[复制链接]

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

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

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

x

: n0 D8 d2 q4 N8 N; @% {* S% c, V& }/ z/ |' {( S% Y- h- d- M
废话不多说,官网自己百度下, threejs.org ,入门很简单。. x) i3 x! n0 }$ G: C5 z7 j! X

" G9 }+ p' I* K/ d8 `$ R  `创建的javascript脚本如下( e3 W8 d7 R/ i& M
8 S8 R& X. _+ w: i
GIF.gif
2 p% T& u/ b+ O% L9 X, v[mw_shl_code=javascript,true]! ?0 i, Q3 \' P
var scene = new THREE.Scene();
; y* T; z' m, \! _2 C+ ivar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);  m( F0 m- Z* e* h& T! {" `
var renderer = new THREE.WebGLRenderer();- Y/ q7 f. c# j0 B% F+ z  g. |
renderer.setSize(window.innerWidth, window.innerHeight);
' P/ x/ q& g- Z' vdocument.body.appendChild(renderer.domElement);% t9 g' K5 S+ O; p( i, [7 c

& M5 V% n! ?3 q! k( I// Refresh Issue 4 T; r/ y; D& E7 Q! O
window.addEventListener('resize', function () {
/ ^, d* e$ t! P% @- |4 C8 c1 {    var width = this.window.innerWidth;( C* r* V2 S8 F+ g1 s
    var height = this.window.innerHeight;/ R) L' I& _* d- S% l/ x
    render.setSize(width, height);
, h: ]3 `% Z. w: U    camera.aspect = width / height;5 X* h, }8 l8 S" P
    camera.updateProjectionMatrix();6 D; V1 {$ J2 O( A
})
" p5 F+ Q0 K' V0 c0 o$ Y& E1 _& n2 M
//orbit contorls
5 D" \' i6 W& Y5 |* e& {$ c! f0 t9 w+ V9 tcontrols = new THREE.OrbiTControls(camera,renderer.domElement);
% j. q/ ^( s, r0 w: T# Q+ z8 z! \7 Q8 v0 y# _1 v: }
//create the shape
$ {; Z3 M) C# N# U) c/ f& w9 e3 e4 [var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
" i5 l% [( m, P$ }$ o//create  a meterial  }  q" W% B" m7 N2 h# U
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
1 N( F" \  t- T( Z/ ^% U1 o! Z9 d1 y& \//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
7 O9 E2 R: X' q# V& a) j//var material = new THREE.MeshFaceMaterial(myMaterial);) T' M1 j! \+ n

8 \1 Y( a5 s; Q( a4 I4 f8 nvar cube = new THREE.Mesh(geometry, material);" u: M3 l9 o* K3 p* a
scene.add(cube);
; }4 r5 S# C% o4 ^; Bcamera.position.z = 5;/ e3 X8 q: i+ {. I2 F& l2 W1 T. L
* K" k, B: N" @4 X% G# k' j, o+ V1 B

* g" Z* }* i3 i, v& Y1 d! a1 s8 @
: Z/ [& B3 i) a& V4 H3 |& n
0 ?" K+ _" j0 @6 r. W& p8 r  _: {2 H8 I  i) u6 V% w
//rotate
6 q+ `' ]6 {- S( t& m  F4 mvar update = function () {
' e9 c% ?' N2 m  r1 X5 v& G    cube.rotation.x += .01;/ ^) Z" x; g2 C. r
    cube.rotation.y += .02;6 o6 p. p! b5 D
    cube.rotation.z += .02;: t5 a( W$ i# }( ]8 N
}
% x( v7 m# h; u. `/ M
. L! O8 x- g- H0 Z2 |* \# jvar render = function () {
7 k" m9 ?) U( }; c' ~    renderer.render(scene, camera);
- K1 h9 b* o. T$ |  Q}
5 m, ?  ~# Y; D# ~& |  x- t# D2 [) ]7 r  @5 G' L0 D4 x2 ]( u# C# I
( ^# N2 R1 r4 g" C

- x6 p. \6 U  d' pvar Gameloop = function () {
, Z: s. \# g' X" M9 u" o    requestAnimationFrame(Gameloop);
' H  h2 t; C; A* v% D8 h0 i* f    update();; m* F/ f! a1 j" q6 t& e
    render();
# r5 @3 {$ c6 M}' Q+ x" C% l1 e- O% c9 {
: j0 |2 J7 r9 G
Gameloop();" A9 e5 m1 {% k8 c% w7 s$ @9 G6 v
[/mw_shl_code]7 U$ q: d, e8 L9 ?& h
% r8 D  m3 i; ~  w
6 _4 r  j& J. U5 N4 m% y
引入争取的html,/ G& q4 z" b; O7 W7 ^% F& M

0 T6 L5 N- z3 p3 n1 z: l[mw_shl_code=html,true]<!DOCTYPE html>; E+ Q9 o( g4 Y" b; ?+ @" @8 Z! _
<html>
3 z5 T$ K- e4 f0 w) {6 c9 {8 L6 V* b; F) E3 S# \# I
<head>0 m1 h! C1 w3 }8 N& b
    <title>hello ThreeJS</title>4 k7 z. s8 ]) m; U6 x" v! b! d
    <style>- r6 ?5 B; H2 d1 {3 {- W' t; E5 _* t
        body {
" \: G3 m8 @7 [& |; [. r! H            margin: 0;
  W8 n1 p8 @8 s" T' T$ Y        }$ [9 F, @* F. c- g* G
0 B9 I' h$ e: W% S3 ]) [0 ^
        canvas {- g* a- u8 u" _* _
            width: 100%;, u1 T: N0 H- d6 J
            height: 100%;
! v( ~3 z( Q: X  w9 z* I6 r        }! n* q, c% d1 e
1 T# q* |0 O  k* H  }
        h1 {
' P, k8 ~' N7 V$ Q9 c9 N            color: aqua;
7 Z4 l- H% T1 i; ?4 b( @) x        }! j% v0 i2 a4 J# P0 D# s; `! X
    </style>
7 F* b& Z4 J# [3 i  i: `</head>
& T/ A. O" l  y) i" C
) J1 _7 ~7 A- K+ c<body>
2 P# n% V8 C# @9 k% u, F1 n, Q <script src="js/three.js"></script>
8 M) I! [( d# Z5 U- X    <script src="js/OrbitControls.js"></script>: r2 A: \/ s/ H$ R  A( X3 j9 {( C
    <script src="myjs.js"></script>
5 r  V/ V" p3 Z+ j% a  4 f8 K0 U3 x1 K& W% \1 w7 ~. p
  g0 X1 b% ?" F$ y4 z! `
# D! a5 M5 _: w( n

6 t3 B' Z, X* J, S; q</body>5 F. ~4 n+ H& \# T+ N/ I+ w
' J  N, f0 r+ [& i  r$ Z, T) A$ Y% [
</html>[/mw_shl_code]% I, X: }' x0 d6 O, A2 X/ K; j4 M" O

& @1 G" [# V9 L+ \7 T3 m效果点击这里:# J1 l6 N; Y. k% B4 _1 }7 n9 s% ?

6 Y+ d! I' z/ e$ Nhttp://plmhome.com/doteam/lesson1.html) K. _7 S5 K4 p. J6 B
( E! T# {; m# [  l; V

- Q9 X$ J  p( a& }. J- }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了