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

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

[复制链接]

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

2471

主题

1276

回帖

8万

积分

管理员

PLM之家站长

积分
82201
QQ
发表于 2019-9-1 18:45:09 | 显示全部楼层 |阅读模式

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

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

x

, W/ g3 u4 k  B1 `" M3 H% r; h3 p! x/ h3 c) P  A+ d( ~; W: {3 _9 r
废话不多说,官网自己百度下, threejs.org ,入门很简单。* V1 x7 Q( z9 s1 N, d9 K
  C' c) f2 U" |; ]+ d& c1 P. L
创建的javascript脚本如下
" X6 T, ?5 z- D% ^# ]! `' f1 j
GIF.gif
5 C+ r! ^" P$ P/ r" z( N( Q& u[mw_shl_code=javascript,true]: Q, m& w; {- b' ~& Y5 e: T
var scene = new THREE.Scene();: P' f: X+ B4 X
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
  `0 [* A4 G4 d# m; W, \. u0 tvar renderer = new THREE.WebGLRenderer();
3 E( `* z) q: ?/ }renderer.setSize(window.innerWidth, window.innerHeight);# [) U3 m" m8 i/ W0 l9 s
document.body.appendChild(renderer.domElement);
9 V( Y( v; Q: R0 E7 i* L2 _* u( T
2 v. N, G! J8 u2 u# r- \: A' z6 X// Refresh Issue 9 T& p% }/ e6 i, C; a9 d$ i' o
window.addEventListener('resize', function () {
- h2 E  R4 A$ |! M* S6 f5 i    var width = this.window.innerWidth;/ C1 F3 G7 @9 K. M( h2 r# K
    var height = this.window.innerHeight;  m& T) B9 i2 U6 F
    render.setSize(width, height);
, Y1 X9 E, E5 k' E5 X    camera.aspect = width / height;
9 m: S( B! E* |# s* P* H  t    camera.updateProjectionMatrix();0 V4 P* ^2 b6 M+ Y* d: F  e0 Z
})5 b+ D- s* G( I( o; m
7 F+ V! j% t" f4 h9 p0 J" V
//orbit contorls  V" V4 M9 s; @' G6 i5 }* j
controls = new THREE.OrbiTControls(camera,renderer.domElement);( @% _: M/ U# E- K+ m
0 \. S, F& ~6 Y; e8 r
//create the shape2 i, }8 E6 v/ y2 s. r8 O
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
/ W4 B$ `6 q7 }9 P) [) t//create  a meterial1 s0 Q) m9 q. G+ p
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });+ Y) {# x- E3 T8 E
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
" z$ F8 n9 t2 T* t( u//var material = new THREE.MeshFaceMaterial(myMaterial);5 ~  }; R5 _7 @1 n
* g% e$ s) l  U" y- B" Z/ b
var cube = new THREE.Mesh(geometry, material);6 _+ |4 X$ C6 Z% r
scene.add(cube);2 b% f5 z/ B3 o5 b; t  j  |
camera.position.z = 5;2 E, Q4 T8 K6 g" F

) D' D/ B4 u0 D' F: ~3 s
3 m+ s- J; I  X
% |# R* E+ b/ j4 P; b, z1 r! B2 o/ ^2 l6 S
3 Q& }: b% |1 X9 ^
//rotate
  P  ~2 x, c9 Gvar update = function () {
4 k6 C5 e; t9 c3 r0 s  h! H    cube.rotation.x += .01;
$ `' e) x3 A/ w1 a8 L( ]9 x4 E    cube.rotation.y += .02;; `& H( K! g. |0 b
    cube.rotation.z += .02;
+ w  Y7 j! N* e! d$ }, @$ G  p4 f}, l3 o/ b* }. T5 d

: N; f  n& k) z  |! a: S5 ?6 i9 Dvar render = function () {
  S1 v7 H2 H8 |* G: c# X  z! _7 u    renderer.render(scene, camera);
1 M3 A& X, ~" X. |}) P9 F' }* d  _; R8 O

$ m5 w6 n5 q' f6 l% u/ p  }9 S7 A0 G/ `' x. f$ |# |, d. K$ L

( d$ Q  P6 n8 @1 \9 f& g4 ?var Gameloop = function () {  n8 S5 H. Z# S3 K
    requestAnimationFrame(Gameloop);, S2 f+ P! \3 o! Q1 h  \
    update();
- w; F3 M/ \& @4 o    render();
0 E' i4 V8 M* I7 D" M5 o7 h9 Y}
) p' \- X8 ]3 H* O$ X# j7 x
0 n/ L; ^5 J5 `Gameloop();
( o1 }4 p  m" h- `[/mw_shl_code]+ u  Q* P7 @% M4 o. ~* W: F! j! B+ t; I
) e3 Q! @% r( Z+ Z3 j  d6 w: u# q

1 G1 j$ {4 m, z3 P7 `& {引入争取的html,, i; \/ Q5 ?' L

- i/ V9 Z3 X4 L, I[mw_shl_code=html,true]<!DOCTYPE html>
8 ]8 t) j( L; W6 s<html>
. U/ Q2 E2 v$ c, }8 D( `0 g
2 C% w5 c3 k- L- W' U  B<head>
+ L6 }% T% [' F6 P+ y( y0 C! f/ h    <title>hello ThreeJS</title>1 F- B2 C! L8 j* d1 @* U5 f
    <style>* {( L/ i! C* M
        body {
4 J* P) _8 k$ |9 G9 x            margin: 0;
) S) J% C+ n; H' _        }
/ E7 C% b1 Q8 A3 H4 q9 T
0 q& ?6 D" [8 D1 P8 l8 [        canvas {$ b* T4 |8 M- H" W' x
            width: 100%;
5 g% i, B+ I% O$ S/ a0 B1 M: z0 R" P! Z            height: 100%;% }' y- Q- A: [& F% l# ~3 Q
        }. m4 I* x* m; c: }2 \) A! n

1 g! S4 n9 u3 L9 R, J        h1 {
0 [  G# X' M' X: t            color: aqua;
/ b& H0 L* s0 q+ G% f" J        }
8 X1 \& n& W% B( q& U  d4 R; O    </style>
$ N0 S$ C) N) b# P  y0 f</head>, W. y% p1 m1 l+ F+ e* @* {" R% K: z
2 f4 J& K7 w0 j( F$ }
<body>
7 F8 z; e* t( @/ b) w/ O6 @ <script src="js/three.js"></script>
' k% B' N- j8 o: I4 x* f    <script src="js/OrbitControls.js"></script>
# m" P7 H! N( k! t* [    <script src="myjs.js"></script>  K3 x+ a2 n- C! |/ T4 s1 b
  
2 j: X- b1 U# e+ o& n: r: U$ z
. ^6 A. F( {. C" P7 x5 o
$ i  H0 m6 `, a; h% M3 ?! [3 e0 _- ?/ P
</body>1 u. D& z8 ]1 q9 X# K4 T3 S
& h! ^; h1 S: f4 z9 w
</html>[/mw_shl_code]5 z4 h" `$ x0 f) T9 v$ [  r

1 e6 W' e" J- Q: S9 g效果点击这里:
3 S2 r+ z8 H  G2 \; k* m) E8 _+ T5 N  _+ Q: h8 h  ~
http://plmhome.com/doteam/lesson1.html
3 O0 C- M( F& L) [
2 o. K  R- h& q7 f# L) A5 S& Q+ z. Z. R2 t+ I, E6 U  K" O, x
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了