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

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

[复制链接]

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

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

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

x

$ f# q5 z% D& Z$ ~7 x- m" e/ M' l' a' q9 e$ y
废话不多说,官网自己百度下, threejs.org ,入门很简单。
; K9 ?% k' b: v, J- ?4 c% G9 h. y$ X, G% k1 h
创建的javascript脚本如下
8 s" [7 ]+ j; [7 z# {" W& E
6 z7 N3 @/ @$ k& T GIF.gif ) `/ J( g8 F; N( y8 A& f6 Y
[mw_shl_code=javascript,true]
) p+ C3 M: Z$ R" i+ j: [' Z& {var scene = new THREE.Scene();1 Q1 c1 T$ S1 B3 I$ m+ C1 M) H
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);5 f3 i$ m3 u; a( C) x$ r& B
var renderer = new THREE.WebGLRenderer();! S% Y0 E0 f' d. e$ p: @# j1 n
renderer.setSize(window.innerWidth, window.innerHeight);; s( B- o: S1 t: k! F# Y
document.body.appendChild(renderer.domElement);
0 G' _; D$ h/ \& w' a- J6 \! ?8 c4 N7 C
// Refresh Issue # j( ~- O& b  G- I; g
window.addEventListener('resize', function () {1 u, F5 l+ p3 {. N, ?
    var width = this.window.innerWidth;
; i# G+ X' c6 G* j  R# J7 [$ W: i    var height = this.window.innerHeight;
5 ]; v1 u3 L' r    render.setSize(width, height);
0 y$ s! I1 l1 J% H7 A    camera.aspect = width / height;6 H* x2 P/ M% ~% H
    camera.updateProjectionMatrix();  H  n; Q# `4 ]1 _- w; u
})
7 I/ I  O% |# R, [/ M" e, _- [7 v2 A+ Y, L/ T0 J, O" Z
//orbit contorls
' H, g( }/ ~8 h/ g% Ncontrols = new THREE.OrbiTControls(camera,renderer.domElement);
4 |9 y* t, x% K- ~9 }: C5 V1 ^% `' S! A* N
//create the shape3 S* Q3 j6 y# ^
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
6 E$ T4 j( O, W  g6 r7 ^//create  a meterial! {! B; W+ G: }0 }$ C" c& a! K/ A& l8 l
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });! Y5 j6 ]& ]6 `; L2 F/ G3 D
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
6 s! i1 Q/ ^" [  X* k, p) {% l//var material = new THREE.MeshFaceMaterial(myMaterial);
7 M0 w. |. }9 W/ P& g5 j. T8 h4 u3 r- K/ i- a5 F3 q
var cube = new THREE.Mesh(geometry, material);
0 X' `; R) t1 z1 vscene.add(cube);& C. D) L. f  h! T2 A% Z9 K
camera.position.z = 5;
4 S. q" I! J! H' e$ H% |
* U8 M: ~3 B8 r! J! E8 ^" B4 A
# q" c# b/ {. W; n7 F2 |; U- @' `+ r) M& n; A6 S
9 U6 @; U! B8 }- m0 |3 |
4 K6 i. Y7 N9 Y' o# h
//rotate : I2 J  W5 |3 d
var update = function () {: k" x& g" d: }2 e. S$ w8 e/ M' q
    cube.rotation.x += .01;
& y/ t4 W5 P/ b! o' R    cube.rotation.y += .02;
* B& d- v) U0 m" l# R    cube.rotation.z += .02;. h7 Y  t0 T8 i" k7 O# v
}, \) a7 v3 V, N6 M( b" s5 v
) B4 B; Q+ r' A! @. T
var render = function () {
1 H' d2 ^$ M* |& Q    renderer.render(scene, camera);8 ?3 C- Y; K4 q; S) @
}
; r. [  M6 V! Y% P6 u( c; _( O( p* L

# A% T! N9 b5 N2 ~2 j7 F! J8 P1 m; W* X$ s+ x8 R
var Gameloop = function () {. d$ {6 Y+ F" i, _( q' d, y  }9 m
    requestAnimationFrame(Gameloop);3 r( a1 }: d/ ]/ f! O) g3 n
    update();
; @: n8 \0 g8 b9 w    render();
* a1 E1 [, B) T7 E- A/ M}
1 C) A# r0 S; e5 {  i( o
& s- e8 S9 a( r5 k/ R; {7 t; b) FGameloop();: C- f$ Y: k' `1 J  W
[/mw_shl_code]3 I$ y4 V- h( f% S( k$ p1 k  d

" n8 k/ U# r) j1 |0 d1 N6 F$ }  R! C/ K
引入争取的html,) D! l+ e) D  ~1 X: V' R

+ p; A% ~* u) p* c0 E; _8 {% M[mw_shl_code=html,true]<!DOCTYPE html>8 R8 {4 A; S/ X: j0 x
<html>
3 p+ a& m" [. h: u( a( f+ [& K3 D( G$ a0 L& f3 ^
<head>
& t& e3 K' ]8 ^! o8 B    <title>hello ThreeJS</title>
+ @% ~( L8 N4 B7 @$ @    <style># y, o8 Z/ }1 N
        body {% G. i" p1 f2 Y/ \: h: L9 R8 W
            margin: 0;) C1 ^! Q4 M* o. M' C& s
        }
$ s( y" v5 h8 m4 u* }- O7 s
( p5 s5 {3 ^# ]1 u        canvas {( ^) |4 p( n! R* b  B
            width: 100%;, z1 z  E% t0 H" h. T- D
            height: 100%;
- I0 L) b; D3 @$ f        }; [! U* D: }2 A5 m6 [$ J

9 D2 Y( `1 _  \2 W0 n' e+ P) @        h1 {4 ^& ^+ @0 G7 n1 j( w# O: T; u9 F
            color: aqua;- O# f, A0 Z, D, C. u" R1 W
        }- ]6 q' i( i: `/ X2 Z9 o- A
    </style>) K: y" m" T5 [" K
</head>* _# ?" i: [! I4 F
5 p" O( [/ `- x
<body>
" O* }& S1 b3 t: `" ?$ p! P) G <script src="js/three.js"></script>* R0 q7 l% b3 N
    <script src="js/OrbitControls.js"></script>
* x9 A. ?* \( L* f    <script src="myjs.js"></script>) E3 R1 b( e% y: m' F1 U9 Q: P+ K
  
7 n  L( ^" j1 I7 @1 [; k' U/ b8 f. e  v, ?! Y

" _5 K* L  |$ B6 ?; v$ R) D# t0 S0 K( ]8 o! ?$ j
</body>& v* Q$ z# k+ @, k5 ^# \
% r; ?# ]* ]+ J- f+ `
</html>[/mw_shl_code]
; w' e+ h1 R  y6 v! V7 s' Y3 ]6 \3 U6 S  I  I' X, V
效果点击这里:
$ ]/ M: C. T3 T% u/ a. p  ^6 Y. R$ o& H# x9 e
http://plmhome.com/doteam/lesson1.html
' L) _5 n# @; H+ O+ s  [; Z1 e6 T+ M- }3 R( {" K& p; N) [' l$ n& Z  k
5 x+ S! M% |- b0 L& r/ q* O
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了