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

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

[复制链接]

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

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

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

x
% N" o$ E% _% {1 \$ n- C& F
( \! j, X! m! o# o7 |' H
废话不多说,官网自己百度下, threejs.org ,入门很简单。
; r# U4 H) Z1 k9 F; {+ |, L
1 Z) F& {  ?. ~3 H9 Q创建的javascript脚本如下
' r2 _# ?. d( d* h& G! U7 ^5 F8 j; }
GIF.gif
! q. D- J3 I  P+ ][mw_shl_code=javascript,true]
% k0 o+ e9 Q8 |var scene = new THREE.Scene();
+ G, I# F/ X5 e$ |" Cvar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);3 S" f' G: g( p$ Z$ ^
var renderer = new THREE.WebGLRenderer();, u* y# y3 d: H6 M; `
renderer.setSize(window.innerWidth, window.innerHeight);8 K0 v3 O/ g8 ^% P' _
document.body.appendChild(renderer.domElement);
$ i( K1 k7 r5 ^4 O( ?/ U4 j2 a8 g/ M$ l/ K* p, y
// Refresh Issue
5 k1 j0 \5 {$ I: n' pwindow.addEventListener('resize', function () {
- |1 F3 e. ^# \, \# h' a) h7 I    var width = this.window.innerWidth;( K' h* s3 y6 C  n" g& w, q
    var height = this.window.innerHeight;2 E0 K0 Q5 ]+ A2 H, w$ A6 ~
    render.setSize(width, height);' E4 r  ]" L; u. Z
    camera.aspect = width / height;) S+ b# k( s, B" ?; M  ?
    camera.updateProjectionMatrix();3 c7 d0 C. I3 Z9 q
})5 {% D/ E+ L0 a+ o; j5 c8 I
8 T9 U5 r: G1 I! U9 a$ i. p. A
//orbit contorls! B) \# M2 ?$ n2 o8 Q7 {. b
controls = new THREE.OrbiTControls(camera,renderer.domElement);, H: Y) S! r5 s7 k' H1 B. d
1 W0 X/ j- T* x8 ]! _6 S" n
//create the shape
1 P- x5 I, d8 }: u' Gvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);
3 S9 `8 R% K1 I' l5 t/ C//create  a meterial' V" [) \4 x, C
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });/ v5 T$ d0 W7 o. t: x) [+ D4 _
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];# V! I. d9 o4 e( L
//var material = new THREE.MeshFaceMaterial(myMaterial);
% C. l- L4 y+ @+ h9 g, D5 i5 x0 L" k: F5 [  o
var cube = new THREE.Mesh(geometry, material);2 z8 M1 n( r7 v3 j9 e$ U+ ?
scene.add(cube);
/ [; o" N/ N* `! L( l! D& {0 R1 Ncamera.position.z = 5;& g1 z  W1 }8 y+ B
1 d& t- ], e" M6 z

0 Z* G( ~; f, T) B9 X0 f5 ^! y
) a1 ^* Q3 g# I7 ]; g2 v5 b- Y! V4 S8 b, l  ?# x/ n

5 M3 ^9 d+ N6 ?( E7 P- ~//rotate 7 C: i! L+ m3 I2 `/ ~  C0 s4 s
var update = function () {5 ^8 s( A) I# J
    cube.rotation.x += .01;+ ^% n9 k. E; c
    cube.rotation.y += .02;
# }2 ^! P4 i: i! _" x9 l3 x5 g    cube.rotation.z += .02;
' i7 q9 o" l7 v/ [2 V: k6 p}
' w9 e! C- E5 o4 o" [
# u! G) `- B/ O( B; j- Gvar render = function () {) ^0 Q% r6 D+ U2 a
    renderer.render(scene, camera);' h! t+ J" l4 c: o3 B8 m
}
  T& |, @8 F! l
" y$ d* s6 }- q1 B- m" @8 w6 a) F
9 A6 e# z' R# r) D" B0 k4 c0 Z" F, {$ O; Q/ v- m& o) G
var Gameloop = function () {9 V* }1 [2 O  |7 T1 ?4 [  t
    requestAnimationFrame(Gameloop);) f! }9 }) X& f4 X# u# e: t. g; h
    update();
  W. y- h) I5 }    render();/ x* i6 H8 i: V
}' b2 l6 }& M# x& |7 u8 i. y
' b0 J- i7 j3 p2 W" z
Gameloop();
- _2 X+ J% S! d[/mw_shl_code]+ F2 C5 I7 O: V& Y6 D
( w  {/ j6 ]/ Z

! j5 d; c' \1 {' w- J7 G( G: W9 f引入争取的html,
- S) M4 z7 L% Z& V' `! s2 Y8 v* ]7 b7 E2 k3 o0 i
[mw_shl_code=html,true]<!DOCTYPE html>
, y# F& }" o4 M. [<html>
8 J, B& U: V# W. X- s% {: S2 I* D2 m0 L) C: H2 L0 l
<head>
1 C* a6 @2 W" L" H- \    <title>hello ThreeJS</title>
& a, S3 q* g  H* I    <style>
% F( X& t; |5 p! S        body {5 X4 }9 Z. j9 I6 O
            margin: 0;* t) f% ?) M1 q& v6 v
        }
% E: G+ r1 A, _1 b$ i7 z
/ W" O$ P4 t  r  ^! N7 U3 B/ v- V        canvas {! p& D5 w8 P- n- M1 G
            width: 100%;, m0 T8 m9 Y2 [
            height: 100%;
3 {: c5 [1 X, p, _4 ^& U# M! a$ y        }
$ Y. b% t; O$ C$ V  Q$ M6 [8 W
' g' H6 B6 A$ {* p! B        h1 {
" y7 I+ m. p+ `. _/ u+ ?            color: aqua;% r" U! E9 h. N3 y7 O
        }
" _* P/ R$ C0 s7 I    </style>! ]+ [+ o% m3 ?! U2 r6 q
</head>6 m& D# ~  A; ]- b* I
8 H! h5 U! w% U
<body>( z9 }1 F# R7 T9 u' K
<script src="js/three.js"></script>
5 }/ k* [3 a- T6 t    <script src="js/OrbitControls.js"></script># S# ], Y5 e8 X  o
    <script src="myjs.js"></script>
$ K6 a1 W: [& G2 ~. w# q  e! P3 J; I  # k. k# R! D' f- E1 u# o7 K; ~3 x0 r
" |2 |! M5 R3 N/ s( M4 d- J
% u- y$ C- P5 r' r

* j( I' h6 A8 X</body>  m; t  V9 O4 H* E
3 v5 j4 c& X  X8 U2 R
</html>[/mw_shl_code]
; c) E  z) y. `1 x- Z' r) {  t' L+ ?
效果点击这里:# g; H8 e* E  D4 u* S" i

" a5 z* m6 y' z" ~" b: y% ~: Yhttp://plmhome.com/doteam/lesson1.html
" w4 L1 q( F' {% l; x' b
/ v/ J& L( }' o3 \4 P
: C' X; m2 N+ `1 _6 c/ k, O* {, d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了