PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
/ n- @  w2 x1 W1 S! P

2 J+ }: m9 m$ c; y% F8 b4 c废话不多说,官网自己百度下, threejs.org ,入门很简单。1 ]) W4 T" V$ m8 G1 R
* m7 O# A9 Z7 i
创建的javascript脚本如下
+ ?' L8 |2 D# u  H: a5 ?6 f# N! e9 y  k7 ~% u! {
GIF.gif
8 F( F% ?+ L/ w! }! N[mw_shl_code=javascript,true]
- `- B# }2 z& @& T4 [var scene = new THREE.Scene();
$ S, I& L: X0 l7 p' `: s4 q% kvar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);0 Y6 g3 o$ u% O. l, @2 D, ~  b
var renderer = new THREE.WebGLRenderer();
# S) E( l2 p  L4 c, @renderer.setSize(window.innerWidth, window.innerHeight);) J) P2 u3 I, ?. |
document.body.appendChild(renderer.domElement);2 w4 c( f! @0 g8 _1 `
8 ]2 m- z: l$ g8 ^
// Refresh Issue
. E$ b3 z. Q1 n4 E' x8 Ywindow.addEventListener('resize', function () {' Q" G  h$ p- |$ n
    var width = this.window.innerWidth;' K+ `6 P: y# t" V' X+ t
    var height = this.window.innerHeight;: E/ u/ M% B; b; [, y( R; m
    render.setSize(width, height);( S" w  N+ h. `
    camera.aspect = width / height;
6 K+ f/ B, C! N5 M    camera.updateProjectionMatrix();, @3 ?$ W7 _- f$ @
})$ b# @8 z2 X, d% }5 e

, f5 [  |  E; O% y6 e* ?//orbit contorls
1 M7 Y+ f+ V! l0 L% c1 pcontrols = new THREE.OrbiTControls(camera,renderer.domElement);
! @% a* Q+ m" c& X( ^" X. x+ }( D) f6 ]/ y: r- I7 I
//create the shape
: z* U' b! q4 P  Jvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);/ p: J2 [+ J& o* N
//create  a meterial
) ]6 W' \, Q0 Y+ b+ W3 ^3 t' l, ivar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
2 @- G5 g% Z9 D//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
( }+ m, p5 D% M; y//var material = new THREE.MeshFaceMaterial(myMaterial);1 P8 p3 N  l. z( |

$ m* p  [' e5 G$ J" {8 xvar cube = new THREE.Mesh(geometry, material);+ S, j6 R9 c! s( u
scene.add(cube);
. Y" U, k# l1 [9 y- Hcamera.position.z = 5;) ^# G7 M/ p" ~# i; A1 V+ p

6 I: r' A  f5 Q5 l& b; q  S6 `$ j& C: M3 e, n$ b

8 I# h3 [( d3 j4 S  E  Q
% Q" N# E" N7 I' W& X7 Q& j3 A6 C+ K1 }3 ^
//rotate
7 K% y6 q3 h8 l% s- D+ d3 Jvar update = function () {
$ x& {# m( {0 O3 g2 e8 D2 u7 E/ o+ |    cube.rotation.x += .01;
! w! b! d' t6 l1 R6 D    cube.rotation.y += .02;- o  F9 ]6 o' u  e: k
    cube.rotation.z += .02;
# u3 O( b7 i# M6 b- N! }}7 [& f+ G2 s: e0 U, w- J# f
% M" w8 i' P+ f, p; D+ H7 v7 ^
var render = function () {
# x5 e8 t: `% _! x! [  p4 _    renderer.render(scene, camera);4 `1 `% M1 o/ T! f8 D
}5 E3 k. e8 Y: [- P$ j

; t& ]% U, Y- ]- {7 D$ b7 {. f
7 K, N  u. y* k! @% o5 k1 C
8 n3 H4 ~! q9 cvar Gameloop = function () {
- w: o$ r5 n/ i7 \( x" L; L; f    requestAnimationFrame(Gameloop);
% m# e/ h/ R' D  ?$ w    update();
% i: n- r2 x; t3 d2 O' z" d    render();$ l. ^$ A2 x3 b5 D7 F8 P$ }
}
$ f. x, L( V! x. c9 A! `& r1 @5 g7 V+ k, d4 w7 W2 Q
Gameloop();" h# M) E4 S, M. R; F  o5 g
[/mw_shl_code]
- g8 C6 C% o2 X  _3 Z6 K
  S$ `( e1 D; x' E4 r
6 W# E0 A0 }$ _$ G% I8 z引入争取的html,
1 m' ^% E" w1 X5 {! J0 q' W  e6 ~. L5 N0 r5 `2 j9 @
[mw_shl_code=html,true]<!DOCTYPE html>. f0 W4 Z) W1 O: n0 b3 g7 N" n
<html>7 f9 \8 l- p; U
+ @' s9 I. i5 t: Z- F; ~; a( z1 }
<head>: ]$ _2 m$ e4 ~6 K# ?, x
    <title>hello ThreeJS</title>8 e" n8 d. Y6 A, t7 m2 `6 D
    <style>
! X+ q3 i/ _$ q0 O' P+ J        body {
: [9 @# D% \3 C) k+ a            margin: 0;
' b. z. {6 _7 B        }
, z1 w- }/ S" _0 i( M# d! O7 Q" V! [0 W$ P- a
        canvas {3 y5 \- y5 ~( }, Z
            width: 100%;
  ]3 R4 V' \* h2 V2 {3 S            height: 100%;* ]8 {  c' w. Q" `$ }, s( A
        }
: D' U0 C& a6 ?5 o: A2 q. i1 a0 J
8 f* I2 S2 w# H! v        h1 {7 S; K9 F$ T% p# _: y9 O( A6 F
            color: aqua;
+ s: m2 N3 a/ i2 U: c  n        }
3 ?" S. f8 q, [  w/ U* b1 v    </style>* p0 [  _3 I. g" m# B
</head>/ P1 }& ]3 m9 p' K+ E4 t  e
2 E' Y" l0 l' ?) b2 q# d( K
<body>2 i3 l4 c/ n/ H* C, `
<script src="js/three.js"></script>  ^. F) l2 H; {3 V8 Q  s
    <script src="js/OrbitControls.js"></script>. D* J. P# K( s; _$ `! {
    <script src="myjs.js"></script>
; n1 I- G+ r, }* z2 X: ]8 c  
7 N4 v: r( @% Z' E; S
: o+ ]5 |0 C- n8 R4 I& f
' [% m& ^: N1 W6 u
# g; {' s8 \4 T</body>7 D6 X; Q% x/ ~' v- U! h

/ @) I0 b) m" w4 l  L+ T/ i</html>[/mw_shl_code]' b$ n1 s# M4 B* ~

* N3 U1 n2 m7 ]& a7 B& ~效果点击这里:2 Z& g8 o9 e& _* D
( R( m* K7 T! Y( ^  u
http://plmhome.com/doteam/lesson1.html# l8 m( i$ b% m

7 O3 i0 ^/ Y$ G3 m
: ?( t. C/ ^7 R, G+ S! Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了