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

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

[复制链接]

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

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

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

x
7 e# d+ b: _+ k9 j7 M: P
& D( f1 n+ z) h1 J+ q: ?
废话不多说,官网自己百度下, threejs.org ,入门很简单。9 d& F1 _. d+ [' t

% B5 P! }$ P$ z# E' v创建的javascript脚本如下) a- E6 ]5 s5 n9 ]
3 f: E" d; P; D: v
GIF.gif
9 H1 `# F8 P  v; |0 ~% O/ H" N3 l[mw_shl_code=javascript,true]
$ C  g' V5 @5 m' c' P1 {& E. E0 n* U3 ?var scene = new THREE.Scene();6 K" D: Y9 H& s2 {* t
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
0 o+ o/ Q/ t9 Y4 Y( Rvar renderer = new THREE.WebGLRenderer();+ p4 y" D' `  ?8 h4 {6 [$ q" H  [
renderer.setSize(window.innerWidth, window.innerHeight);
2 Q% q( o9 c" d( ]' wdocument.body.appendChild(renderer.domElement);
* t* X& s1 p1 x! O6 O  a  Z8 f* |3 o: ~0 y: C
// Refresh Issue * H. [1 c8 Q$ @2 c+ B2 D: q: V
window.addEventListener('resize', function () {/ E& \' j6 I7 a5 w
    var width = this.window.innerWidth;
3 U. O' a9 c+ \2 A, C    var height = this.window.innerHeight;
0 j6 Q7 v5 \" I    render.setSize(width, height);
3 n- l. R( z  v* t, M, w( l/ J    camera.aspect = width / height;- s# F, P+ H6 u1 r
    camera.updateProjectionMatrix();- o3 U: O" P! N' x+ w2 r/ \
})2 [9 u) }+ v' u) Q' ~. [
6 |9 e4 ?& o1 h/ I
//orbit contorls, ?2 z4 [/ n* r# ]2 b
controls = new THREE.OrbiTControls(camera,renderer.domElement);
. l" F4 h/ [; j$ ~& {. J, u) p5 j7 e7 S8 A/ Q- t( H9 o
//create the shape
+ o5 P5 y; x6 r* Z' N/ G# Z- S1 [var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
: H( W, K" |+ r- [//create  a meterial
1 \. |1 d: U0 o: ?8 gvar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });4 ~+ X/ Q: r; D2 d/ }
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];6 x; O7 j* Y* q
//var material = new THREE.MeshFaceMaterial(myMaterial);% k2 D: g1 G( Y
: T. L5 h1 n0 Y7 C; [
var cube = new THREE.Mesh(geometry, material);1 r' M% a' J. p9 I. V7 C, n* E& u4 h
scene.add(cube);
$ c4 x0 l# R8 `camera.position.z = 5;
" \! T0 z/ C% B* j8 {
( Z+ Y0 l2 i7 |: T5 @' o$ U4 C2 Y, u5 Q. `' s2 j
" y! S' k+ M) Z% p2 ]$ \. ]) i

% g# D* ^5 X/ n, Y; d3 E- B& S3 y  O$ D8 ]7 j6 o
//rotate 2 p/ i- z/ J! M  V' _4 `  S! H
var update = function () {
, ~: p6 z4 _8 k1 e4 f    cube.rotation.x += .01;
% }  s  Q4 ?; G. F" }" J    cube.rotation.y += .02;
6 W) T$ Y$ i2 P/ h& j    cube.rotation.z += .02;
/ O" s" }2 ^4 G# Z# [}
' B5 `/ P# k4 V8 f* }2 H3 m' o8 X
8 f) c+ K$ N  yvar render = function () {8 |2 n& c' J1 N; Q! G0 g
    renderer.render(scene, camera);" O3 c1 p, B! _: E: v% M$ p
}" X& n  d; e$ V& o1 V- F
0 x; J- a. w+ k3 H3 Y
- ?7 h" q. [5 g; W6 }9 O- A

, y. x; ]5 P( ~/ r! bvar Gameloop = function () {
' T+ p1 }  F% I9 n: e1 `    requestAnimationFrame(Gameloop);( c6 |( c, K) Q- l3 i6 D+ K+ u
    update();
9 f8 M' [; b, `5 @. V    render();
. A/ X4 w) c: j9 B6 ?+ `}3 E0 H$ i5 I; h1 ~) v, A

1 K( t9 D: I( m4 GGameloop();& p. O; z0 x; I5 n" l. k& a( J
[/mw_shl_code]. N) y( l" |% l# }9 C: M8 L* q
) M! A3 U# K- {: P. M
" O+ B. P( v3 S( q: @/ b
引入争取的html,4 O* _0 p; [& E

* E9 c; H. {8 x7 P0 H( W% V6 c5 s: ], I  m[mw_shl_code=html,true]<!DOCTYPE html>4 }: ]% R4 L+ O( y- X$ G
<html>0 H  T6 L# e$ m! ]0 J
- B! V+ p- {+ z* K' e
<head>
0 ]7 {0 W+ p; S$ t$ B    <title>hello ThreeJS</title>% R% y4 b' d: _2 k7 o
    <style>5 r2 U0 `. e. N
        body {
6 n' E( L' e# H, l/ _            margin: 0;2 j0 [: _. B' r) u0 M, o
        }
. q7 F. r" A) G: c- P2 {1 T: I; r1 t  f
        canvas {
2 H( \9 h- \* Q! ~6 u            width: 100%;+ ~- l$ i8 E( b( ~0 P* }6 o
            height: 100%;6 \) H* g# r5 `! v7 ~8 R
        }* i( J; E. e# h7 I

: P: B7 c+ r8 q5 n        h1 {
* u5 j3 l( f+ S5 G5 z- S' X            color: aqua;
' V' n( T7 G" I0 v$ j; A" W/ k3 u        }& `- o. x, o3 F* C6 E
    </style>
9 A! E: s5 ]' k/ x- ]: n! e; _) f* F( A</head>0 }/ C. P- D* A8 \

( [5 b: s# w6 r- q<body>
) E* ~7 M: v* ^8 s" F: d3 M <script src="js/three.js"></script>* W! i( ~* g0 C' @# O  \
    <script src="js/OrbitControls.js"></script>
$ A7 @. Y4 j" a5 M$ `3 N) \    <script src="myjs.js"></script>& n1 r7 q2 }+ J5 \6 r
  
" a2 j8 s4 o, ]4 l% F1 E7 A( ^+ D; ^' S( f6 u
/ ?* }. b) m8 c0 x8 E$ _

: `3 |5 i+ J+ m. y$ x</body>
9 K, O5 P0 M# S: E6 \  |: o: t- Z& o- E
</html>[/mw_shl_code]' f; |; `7 T* ^; K8 y
! e  ^1 ~" A1 X& o- \, z
效果点击这里:8 T! d1 }7 v2 x
/ u, G* B# X6 ~1 n9 V
http://plmhome.com/doteam/lesson1.html$ e/ h1 K' H1 Z# B. C
" d; @2 O5 B1 A! e/ l8 i

2 Y9 q4 P# f1 k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了