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

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

[复制链接]

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

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

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

x

6 C, K2 s& z2 ]+ ^8 j
0 I2 F& z0 r' d8 I, A$ O9 d废话不多说,官网自己百度下, threejs.org ,入门很简单。
" g( F3 @# P7 w0 F9 [! s- K
! d4 ]. L6 m2 ~  E+ T3 W* Y& H创建的javascript脚本如下% U9 A- H: I7 ?

6 ^, C& e+ t  ?+ x' X GIF.gif
0 m- |9 b% Z! z/ F7 u$ {[mw_shl_code=javascript,true]: H, ^8 M9 m2 H7 f. s
var scene = new THREE.Scene();3 B5 L: M, j5 F  U4 v6 f
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
' A& G. c1 T0 B6 q: G$ L# }6 Fvar renderer = new THREE.WebGLRenderer();/ \! P% o$ @. F9 t3 N  @
renderer.setSize(window.innerWidth, window.innerHeight);7 P: |' N8 Y7 Y# A& V! {# n
document.body.appendChild(renderer.domElement);
9 X/ ]& a+ l  b2 a7 g
! L9 c% y3 V& g8 O8 ^// Refresh Issue
2 n4 J9 K1 S3 U) ^- d, t% |window.addEventListener('resize', function () {
* b7 w0 c2 s' l1 i: E* o, F" x    var width = this.window.innerWidth;
2 |; M% f7 f. W4 [( z, M4 d3 G4 F    var height = this.window.innerHeight;
, t0 z" h- r7 }2 N/ f    render.setSize(width, height);
9 o8 q2 f# F: V0 }9 D, f    camera.aspect = width / height;
4 Q5 |: P! e+ r7 q0 E, _$ b% K    camera.updateProjectionMatrix();
; F. p$ o" T# H! Q* B6 A})$ e  T. Q6 o3 N+ v9 D

1 [9 C8 M+ g" K6 F: b//orbit contorls8 L5 Q8 ^: d, V" d. h8 Y. T
controls = new THREE.OrbiTControls(camera,renderer.domElement);6 }) G& G; f$ \2 D8 T# V8 Z4 j7 M

8 w% J7 g! i9 k//create the shape
; C# ?& ]! Q: s9 _5 e8 A& Evar geometry = new THREE.TorusGeometry(2, 1, 16, 100);
; R- b  T4 v5 s2 e1 b; ?//create  a meterial
, n; u9 m* T" l- o/ x% X7 Kvar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
) o: g" W; [" s% H( N7 B//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];; X, `) L" A2 j. W5 b1 d5 I
//var material = new THREE.MeshFaceMaterial(myMaterial);
* V2 i" I7 e- e: E- q5 ?. _0 r
9 E% G' `3 c4 Q+ Y5 I4 X) tvar cube = new THREE.Mesh(geometry, material);6 u2 m9 Y4 j+ d& K5 C- a
scene.add(cube);3 Q. d& L6 C! ^9 x& a. b3 _6 i
camera.position.z = 5;' u8 c- B/ m6 V) Q5 y! [

+ H) K6 e8 o/ B$ d. ~
( t) D7 r$ ~' h2 h0 w' W' q' |
- z  {" j, |" [* V# h; w! N3 F
- M# H' L" ?2 d3 L- E+ J! }
' L9 {3 B) |7 ?8 t$ M//rotate
: J' C" a- e6 P, L3 Y2 |3 Xvar update = function () {
/ C& l, p! V2 v7 R) m0 N( X    cube.rotation.x += .01;  G$ f) E9 e  b
    cube.rotation.y += .02;# n7 a& O7 c; {0 l
    cube.rotation.z += .02;# H7 M" d9 s1 T1 k. S. b9 q, M
}) ]1 L) M/ _9 a  Y) Z# x$ d

: w& D4 d: r9 q% I8 m# Jvar render = function () {" ~7 x2 y! b$ t* x7 F' u0 k
    renderer.render(scene, camera);
' J3 n1 E/ g# M}6 l4 ?' ^' X$ ~. R

: P8 G) y) }4 q+ n' N$ Q
8 D" `9 D  ?9 @) }& `: R; p* r3 d0 o2 P7 t& Q$ @. Z- o
var Gameloop = function () {- K/ \( L  s* d1 h; G
    requestAnimationFrame(Gameloop);
+ Y% t6 O& W2 C% \% S1 j    update();; e  B/ [$ S' i- F2 R
    render();. Q- q- p. Q4 d2 J. C4 V) v
}3 |/ |5 m, J  e' P. n

" \7 H5 \  _$ ?. K9 t$ r+ RGameloop();- r/ p1 ^* J4 p2 l
[/mw_shl_code]) f  ^$ V, J+ ^+ Z* V8 C
' A* W$ ~; e" Z; w2 O7 `, C
7 e- V1 `7 k& J. T8 F9 o% m8 Q
引入争取的html,
0 R4 U$ t' G8 J: O! B, m
2 K$ g* I/ b6 n" ^[mw_shl_code=html,true]<!DOCTYPE html>. e  A, S" i5 u& X
<html>! D2 b  f4 X# F. T
8 |/ N5 H: e# y% e
<head>
% E5 s4 g. S. P  ~    <title>hello ThreeJS</title>
4 z- R0 K: u" r5 h0 j: V    <style>% @' r" i3 i% [1 d3 Y$ W- S& J0 g
        body {
0 C9 e% f8 G2 c; b' W; _            margin: 0;2 {9 T7 c# K/ O- V: i) r
        }! H' D! [7 M; K5 v1 ^3 d

% r9 O' w" k6 `/ u4 o        canvas {
/ k: [0 V+ `% v! M& `! T7 m            width: 100%;
8 Y7 L. H9 ~) A  ~            height: 100%;
- ]5 q% C; P! V5 o4 y        }
; {6 o/ r+ B" @# n1 A/ W% M0 I+ Y( X8 v6 J4 c# ^' I7 G2 [* ~; @
        h1 {
8 q4 i( H, d: n3 I/ i4 [6 q% ?            color: aqua;
  m( l5 x4 k+ S2 P4 x        }
  Y; l3 r) v& r: k. n$ `" h: j1 a    </style>
+ b. T6 t  i2 E0 h8 Y2 t</head>
. O. N9 D, |/ i1 \
/ ^* L6 S: o6 l# J<body>7 M* y/ }# Z+ W3 }; o
<script src="js/three.js"></script>+ H3 q2 [8 s- A8 |
    <script src="js/OrbitControls.js"></script>( E- S2 K2 Y1 ~4 ]
    <script src="myjs.js"></script>
$ w/ e8 u( e3 {8 z  + j$ {2 m% ^9 m# g. @) D2 V$ P

0 @* h) Z5 m8 D2 [# q8 v, B7 T  d$ X4 s$ L
1 H' g7 Q2 a* T1 ]. W
</body>
2 {+ p' T1 y8 Q7 Z; S7 u& [" z- X# u% V, B+ X3 t, h
</html>[/mw_shl_code]5 B& I( T; G0 d2 G0 U  B& F) Q) G

. j9 j. Z: n8 m9 Z0 y效果点击这里:
- l. p! [/ M3 z7 W. X- {/ P5 e' X  Z, m, h1 W  i' ?5 c
http://plmhome.com/doteam/lesson1.html2 a' K# H- Q4 U' o
+ B! ^9 K+ _6 b/ \5 t4 C; _( L9 B6 t
  s; N9 j( w0 o3 Y1 N  {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了