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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x

  Q: y7 V3 c! B& f3 I" B3 Q4 `. m/ f8 Y6 K4 N: G) F0 u
废话不多说,官网自己百度下, threejs.org ,入门很简单。
) n9 M4 k) z# \/ S+ l1 j
$ c5 w5 t( E0 P% f  N% [创建的javascript脚本如下6 S% e+ K9 Y* w( j: y
3 f/ e  C6 w5 E8 @" p2 f0 _% R
GIF.gif ( u7 F& M7 f! i; P8 s+ V
[mw_shl_code=javascript,true]
' z* ~. E5 ^: N* cvar scene = new THREE.Scene();
$ O; f1 _" g+ n. N9 g) bvar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
' X2 p# y3 W, g& M6 T# xvar renderer = new THREE.WebGLRenderer();: n# J$ d& {8 O$ N
renderer.setSize(window.innerWidth, window.innerHeight);
6 C' b, I3 J; o7 _8 odocument.body.appendChild(renderer.domElement);) t" K6 y% D: c. h" P1 ~0 I

; }# f, n- y# x* s7 {6 T// Refresh Issue , r8 s1 w# X( u+ j9 ?
window.addEventListener('resize', function () {
4 O& L9 X* N+ I6 ?7 l% e5 k    var width = this.window.innerWidth;2 U3 e1 o& g5 ^/ z+ H! G
    var height = this.window.innerHeight;* ~7 k/ n: @& E
    render.setSize(width, height);& U( d9 K" M; {+ h0 p3 A
    camera.aspect = width / height;1 h# G& M9 W) y9 R9 v2 _) A
    camera.updateProjectionMatrix();' d" e$ N9 B* @
})
$ t5 j/ K2 H$ \. J& e! c5 \; J; C  n9 \2 a! n
//orbit contorls( T% M) V3 x; v& _
controls = new THREE.OrbiTControls(camera,renderer.domElement);
6 K- ]3 D9 h: V) W* z
. N  Z# T& s7 q7 m! I! |3 i2 [//create the shape
2 S: h- H: }( s8 qvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);' ~/ {' [9 `4 g$ S8 U& O) H
//create  a meterial: m+ \0 k% B) ~/ N, |
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
2 ~+ x0 U, b2 V3 V0 K' ?& u//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];2 B0 ~# ~8 ?* Z* I( N
//var material = new THREE.MeshFaceMaterial(myMaterial);% \) Z1 ]) @8 D5 n5 ?

4 |  D9 |+ h5 l8 h& v/ I- Pvar cube = new THREE.Mesh(geometry, material);, R0 y6 p% @. U, ]7 E5 G
scene.add(cube);0 ]3 Z& J% [* F7 ]& A$ K4 k
camera.position.z = 5;
& y! S: p3 y4 ~2 @" d* r+ e1 J/ b3 J6 p8 [( I& Z! t
8 i& T7 O# f+ x: {2 f

3 B+ ]7 \; X" `3 b7 y  k
/ {8 W/ i7 d+ l- A) y; u* e$ `3 [  O) p0 v7 f, }! ]
//rotate
5 L( ^) x5 C& g  s: E; i7 Bvar update = function () {
" E; @  k: B- n$ Y: t, ?2 K    cube.rotation.x += .01;
' O& }0 y$ e) K. s6 t( v    cube.rotation.y += .02;# {4 w9 E  L0 X0 @  h
    cube.rotation.z += .02;+ z5 [+ \3 u7 D9 |& d7 H& u; _4 y& s1 V
}
1 Y2 Z4 Z# `+ F$ u& v
! K# B. I+ J8 q7 gvar render = function () {; \6 O: S9 N1 z  a7 h/ _
    renderer.render(scene, camera);8 f9 U/ V+ v$ [; w0 b% \  [
}, b9 o! E) `* V5 ~
1 D0 s0 P/ ?( g' s
/ H) M& g2 ~- E1 `- r4 X% P

0 V' j% ?. Y+ {5 N2 t! u( Evar Gameloop = function () {* C/ R+ N7 b7 N# }
    requestAnimationFrame(Gameloop);, t" \/ A+ C  g  c" v# p* L9 b
    update();) f4 ]0 X. m4 N1 ?% k) c8 w8 V
    render();, M" t7 [' L) X/ u& M
}3 v6 p$ E; r! ~/ A
0 u8 a4 X0 F% N5 s9 J
Gameloop();
2 p. O5 L! ?; v- X[/mw_shl_code]) E+ B; n* U; T$ a5 p$ \
! {# L; g5 d* [. K! u% D3 c4 T5 N5 {

/ Z7 N$ P5 |8 |& E( y3 P引入争取的html,
$ _2 B% |* s1 c5 g( w
7 w9 K+ ]4 B; `4 f- U8 B[mw_shl_code=html,true]<!DOCTYPE html>5 s$ q" }2 ]1 \# X4 {" u' z
<html>& ?  C7 i3 }/ w/ w
  M. L: s3 a( ^  Z/ b, k  ^1 S% G
<head>( g& N# }0 D; W! O
    <title>hello ThreeJS</title>
% ^- g$ y) u. x* `% x/ l$ o    <style>; A/ t* r; j8 N' s
        body {" c  ]6 s5 d4 ]) N; U8 R0 t! Y
            margin: 0;1 [) [. ^2 I& K* q
        }
. ~; O, _! w8 ?3 G/ q/ P5 ^% v
% Z5 m& q' Q* O, I* Q. y4 K        canvas {4 R4 C+ u, F4 ]$ k" H3 m7 r
            width: 100%;1 c, G7 x# e) R" X: {
            height: 100%;8 D( ^! H. Y+ [0 m4 w# X3 k9 R
        }
9 t+ \* O  T  X( d( v# O
1 T$ p; n  d: H) c' S! t5 U5 z  W        h1 {. [' k# H' K2 [% h
            color: aqua;
8 j5 S- E0 F( a3 t# P+ H        }: V1 o5 p5 Y& v3 l3 ]1 J. N4 k
    </style>& r$ I0 N7 G% p
</head>$ i, v' F" ]; X% c2 n4 V- f3 X

7 G# r5 J. k- Z- T, ]<body>
/ z+ f& i$ ~5 w8 q% _! v) ^% Z <script src="js/three.js"></script>
1 s* ?! O: T9 o- W$ R& H: x& N4 d5 X    <script src="js/OrbitControls.js"></script>
7 W4 r6 S, a0 E$ l    <script src="myjs.js"></script>
% a' y+ v! N/ V5 I% k! M3 J  
& r0 s" K. x+ B+ f, V. c/ l1 Q$ ]
. r, D  `5 h9 u4 r, v* {3 E: s2 X0 L; C/ t
4 N# I: A+ d# w8 R1 ]9 }# {
</body>
$ M' l" u* ^, P4 b. R' n; U1 M3 O! y: E' s
</html>[/mw_shl_code]* b# C+ m8 U* J! K+ Z

' w8 I1 k* o( j. [. S效果点击这里:% {% |% ~; v$ C9 M6 j
9 K5 C, k) s: A9 b  d1 d1 z
http://plmhome.com/doteam/lesson1.html: [: I3 b7 K( [- f, m3 d8 n1 k

  Z0 S" m2 r+ a' N' J4 x
0 ~8 D/ }4 |+ y2 \( E( G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了