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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x

5 H' W. G1 U. p: R! \
3 Y6 Q& ^5 P- T- O; |" @0 V9 P废话不多说,官网自己百度下, threejs.org ,入门很简单。
4 R3 F  q! C6 I( W$ s9 U" L
( n! i& d& M$ l创建的javascript脚本如下; B- }! ?/ J) L" s1 }' O: v
4 z6 ?: i  r9 Z7 y
GIF.gif
* B3 Q! t5 W) N1 F8 h[mw_shl_code=javascript,true]* O5 ^1 x; y  F7 F% q- O8 a( b
var scene = new THREE.Scene();/ ]6 o" C- \6 ^4 l# ^! O3 k
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
, t" b% \! M% L  [- `  {var renderer = new THREE.WebGLRenderer();7 q* H, Q+ E' A$ Y
renderer.setSize(window.innerWidth, window.innerHeight);% e5 T* C- x5 h+ |# z- z: N; O  a
document.body.appendChild(renderer.domElement);
( ]5 [3 `9 m) i* W0 H7 n" C( J+ m% m8 g: {' ]& D5 _2 [! ~. q3 c
// Refresh Issue 3 F+ n9 C- v% J+ ?& Q! v: v: A
window.addEventListener('resize', function () {5 {/ Y0 ~) i- K% A+ k) f
    var width = this.window.innerWidth;
1 B# F4 ~; Q7 @5 F. @% X3 y    var height = this.window.innerHeight;
$ \: s# }. d3 A& J; _9 P9 P8 k  J    render.setSize(width, height);
# I1 i- p9 q# _( U; s& Y    camera.aspect = width / height;
- n/ x# ], X- v* o; v1 \    camera.updateProjectionMatrix();
+ d+ ?" v$ D+ f' `8 Z})
+ L9 u, f( }! y! d( _; X
9 h, g" g# h: L. q, S4 w3 d//orbit contorls. f' K. ?3 ~8 w9 V
controls = new THREE.OrbiTControls(camera,renderer.domElement);
( J$ F( B* V7 y, _: H6 w! E/ h  c8 t2 c, w- w) |5 B
//create the shape
. x# B2 f2 n; Y7 L5 q$ V* Qvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);
/ _* z% _) o- `! N8 h//create  a meterial# i4 k$ U! G+ L" R, I9 }& S
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });! c+ T* b6 A( w$ w* _0 r% `! {
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
' N8 g$ L3 l" j$ i; j4 S8 n//var material = new THREE.MeshFaceMaterial(myMaterial);" h- P3 v& V) g. D, E9 V
" [8 w2 S! m4 U
var cube = new THREE.Mesh(geometry, material);
0 H+ |% y/ ]/ F( s0 r' E" qscene.add(cube);
# e6 a2 t( y# k/ w7 Y7 Mcamera.position.z = 5;
7 p) Q" c( J! B/ W9 P0 d# ?; @
& \/ ?$ h' y: a1 ~5 D* L( n
, w6 r* N6 e# r9 N# W% k" F" l  f, X7 ~" n) H* V/ \0 a+ {

& h# p, g! I1 ]- V+ j9 H: v" U4 ^" d2 v; k
//rotate
( y6 x1 M7 B6 Y3 v* J# Avar update = function () {! H; u% Q0 z0 [3 w$ D
    cube.rotation.x += .01;
; K& A! O: y  d" ~    cube.rotation.y += .02;
9 }, @/ J1 G$ ^" Y' x, i    cube.rotation.z += .02;
9 F: V2 n- H, {$ q}
! c# ^+ \, A4 X0 W3 A: E
2 I2 V% X8 H! r/ V+ E. }4 Q7 @var render = function () {6 N" u7 {; i6 [1 Q- j5 \
    renderer.render(scene, camera);
' p3 X( K) u+ H4 F}8 Y& J4 z: l% P

& m) d( i8 P; e0 j6 K+ H7 ]) d4 s! h# x9 a
; u) J- v& _: A; e. W4 [% h! Z
var Gameloop = function () {- N, P5 o* P8 [, W7 b9 J
    requestAnimationFrame(Gameloop);
3 e2 u' C# F9 X! Z# f    update();, f/ T( Y* Q" [1 D
    render();' n5 ~/ A0 p8 F! P6 ~" G
}  i; T* Y* V( G; k
5 X! V! N& Z! Y' o5 J$ N  C
Gameloop();
- e, \& U+ `, q( \' B/ u[/mw_shl_code]( p) K5 }. ?1 O1 e# {7 q7 W# R

# t' K" ]7 `- `7 W- X8 Z8 c: V" G) L" G8 b" @/ L/ [0 C
引入争取的html,
' D- E5 m& }- i+ q
; w) a/ s2 P! l) S% s% ^7 a' Y[mw_shl_code=html,true]<!DOCTYPE html>
9 _& y/ N/ w5 I9 K9 E6 V9 \<html>
& u9 V7 n2 V) [: H" J2 X4 P* ?. R3 Y% i. C" m$ N% n) P
<head>8 G; @; [! x6 q) ?/ G: h
    <title>hello ThreeJS</title>
+ Z, [  y7 |8 x% f    <style>: T# _9 C7 i9 }0 \: R& p3 b
        body {
5 B* M* H; }" q; b6 J7 |1 O  }1 l            margin: 0;
: `  [' I& G1 g2 o& `! {4 K6 ?        }" j4 ?1 ?) O+ x8 N0 R7 L: i% k

: N, i3 _: y: ~% c; h        canvas {  k* V  ]- a+ w& T# ~4 }
            width: 100%;
. v# J5 H7 R5 D4 v+ [5 ^            height: 100%;
% o" @. V* d; [: G' N        }3 k/ [6 x/ B; K8 E; o; K
1 f" W% H$ R8 {* h5 M# W
        h1 {4 V2 r7 S: p0 z: g6 _6 `: C" V- c
            color: aqua;
% `9 H' L) [% H  ]/ M) s8 m        }
9 I0 V! q# W& U9 Z0 s    </style>
8 F1 H% G/ p8 B' Z</head>  b* Q& r. m- t3 Q4 |

& Z8 t" T3 V1 c' v+ I6 U<body>6 b: _7 E" p- d2 P" v- P& j% m  I+ }
<script src="js/three.js"></script>1 i, E% k% }/ }
    <script src="js/OrbitControls.js"></script>
5 X% B0 u  \$ G+ q& n    <script src="myjs.js"></script>% A  L+ g2 K! m8 c5 W( V
  
3 {& _  }! N  `6 F* ?% N, }; m' R, x; M* p
8 z8 l' n  t+ b6 ]" V' g
+ @# F5 a2 i5 K
</body>
7 e; Q7 n/ x( `' _7 o) V: b! p7 ?9 u. r9 E
</html>[/mw_shl_code]
, G& R) Y, X$ n% X- Q6 R) g* ~
; p) v- h( l% W  x效果点击这里:8 k3 ?( ^8 J6 E
5 G% b# C3 H5 f; d( m6 Q6 i
http://plmhome.com/doteam/lesson1.html
5 p7 u1 K1 _3 G2 r
: P0 F8 I; y. A
( R5 A3 M3 |7 Z* I3 a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了