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

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

[复制链接]

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

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

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

x

/ e% P; d5 Y+ x" `1 X, S
* ~) e6 m0 M- d$ {2 ?( p废话不多说,官网自己百度下, threejs.org ,入门很简单。
1 k( m* o) N! G. ?- g$ s! G' m% ?
( w  v/ g5 U- p( d0 V# ?. @创建的javascript脚本如下2 f) a8 J! O* R4 t; U' {
: s+ y; k8 e4 b5 g
GIF.gif
3 V6 M; R/ I, A4 V4 m5 G[mw_shl_code=javascript,true]
* }& M! a+ n; k+ x6 i$ Ovar scene = new THREE.Scene();* y) j# `0 p$ x8 _; x: N. Q
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);" D) x5 @/ h- v- d4 r+ O
var renderer = new THREE.WebGLRenderer();
$ Y; V+ N7 s; I5 _( J' Nrenderer.setSize(window.innerWidth, window.innerHeight);
2 ?% [5 s. r! c% B4 Pdocument.body.appendChild(renderer.domElement);+ N2 p4 f* u5 S6 s" d) l! q

/ r1 L2 i+ P& j) Q& d4 C5 L// Refresh Issue
4 A8 _' Q3 H2 ?6 t. mwindow.addEventListener('resize', function () {
# ]5 K& {3 |" I9 Y! R0 g8 v5 L2 h' j    var width = this.window.innerWidth;& O3 [5 E9 Y4 W" s2 H+ q4 d
    var height = this.window.innerHeight;3 N) a: i" N* M4 R
    render.setSize(width, height);
: W$ I" `4 U- \% a    camera.aspect = width / height;# }! P! n) `: O
    camera.updateProjectionMatrix();
) B0 c6 B1 f# g/ r, ~; b})
+ l+ Z9 u! _$ C2 e0 m, [: {8 {2 c4 O; K  z
//orbit contorls2 |! x5 D/ A0 ^
controls = new THREE.OrbiTControls(camera,renderer.domElement);8 j2 R$ G9 E0 s- o

" T3 {6 ~8 {5 Z. t9 B//create the shape
4 a: k, B3 ?, Y3 ^0 A9 cvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);, J0 H: v6 U' m5 G& n# p
//create  a meterial
7 G6 F% W/ S% C- a% n! q2 Mvar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
2 ^; R9 H" j0 \! J8 Z+ O//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
  M5 Z+ \4 I, I  f3 v+ `% g* C//var material = new THREE.MeshFaceMaterial(myMaterial);
, e& g! t# O3 \( s* f' E. y! L* L
7 @4 Q4 i; `- X  k  Jvar cube = new THREE.Mesh(geometry, material);: t1 n2 ?' K! F$ r" }1 h
scene.add(cube);3 C/ z7 I; M* @/ K+ |; z
camera.position.z = 5;1 L, f& g/ A- Y: e7 u
- O; N" ~9 W' m
3 [2 O# Q- D  a4 i& L& q; c" p
( I, _8 j$ ^+ m% s$ v# j) U+ i

/ e) `/ o% ^9 @! H( e# ?9 U2 `" i$ g6 ~& t
//rotate ( C0 M3 Y- A6 ~5 O
var update = function () {2 ^% S5 ^" @; C* z$ k0 _
    cube.rotation.x += .01;
4 y' v6 a; [/ O; N  F. ]    cube.rotation.y += .02;3 x% X+ q) Z, r. y0 ~
    cube.rotation.z += .02;  ^! b: T. J# g# w$ w( t  F
}  h8 z4 {; ?8 ~4 O$ \

3 \0 E" d5 i1 d/ U1 T  z' M8 hvar render = function () {
; N6 J3 {' `9 V+ w    renderer.render(scene, camera);+ c: ~: n7 ~  z7 b  ]& @
}$ i' g) |" X: W5 A$ M& M0 U

) y+ F6 [* t. V$ o( S) n8 U
; E$ H& Z, T, m0 k/ v& S' h4 q$ Z4 s* G, H8 r: ?
var Gameloop = function () {
3 T% `, ]8 _# N: p. s6 t; h0 r" I' J    requestAnimationFrame(Gameloop);
1 S; L% `8 d# P: u6 H) R. r    update();
- t5 `- N. F. J: M    render();& {  u3 y/ ]  D: c
}# H% [# d! L% M# O8 E

, c3 ?5 R. w8 O( D. ?1 @Gameloop();
" P8 y& _4 D+ r* ^[/mw_shl_code]
& J% u- S% ?8 s$ g* l' e, J. L2 Y! z5 I4 ~6 m
, y1 ~' K% J; |, w4 |
引入争取的html,1 Q! e; i. S0 z( s9 G9 ]

2 H2 r& c; A7 j1 \% J8 U) x[mw_shl_code=html,true]<!DOCTYPE html>
9 u2 D6 }7 f( {) S* P; u) K<html>, V0 k$ E: K/ _/ U9 @/ |

1 Z  V" Q/ X( g7 s8 J- P5 J<head>2 r! q) t4 |/ G/ \* ]' @, F$ }/ N
    <title>hello ThreeJS</title>  x, m2 r! E: U. V: _* T) ~- T
    <style>+ |5 H+ ]7 H2 c+ A, O
        body {# b$ m* Q1 S$ F3 G
            margin: 0;+ W" I+ M$ o* |3 u- e2 |
        }& a9 q! K4 E/ B" \5 u. m3 Z$ E
* z# [2 Y% V) d2 N' w/ A: }
        canvas {
2 F) T8 m" f; O. l$ b2 }) f0 S            width: 100%;+ q& o. ?. L) ^$ Q, \
            height: 100%;
1 n- `6 g9 l; q/ {9 }/ H        }
; A5 X+ J9 G! L. [" F2 q) c) X% Q+ r
        h1 {1 Y) @$ H3 e% t* f0 x
            color: aqua;
  k/ V, C) U/ g& d; y        }6 M0 ^2 |: b: U1 m) x  y1 r3 ?* L
    </style>3 S& \* Z* S$ x. o+ T0 L( Q
</head>
/ @7 D6 W6 i* u1 I
- Y+ x, ^* Q- P1 Y8 A8 b! ~<body>* v) G. w' u$ w. t. p# e# T- Q" K4 U
<script src="js/three.js"></script>+ z$ o0 w8 ^; ?  \2 z9 \
    <script src="js/OrbitControls.js"></script>
! F! a  j" U/ B    <script src="myjs.js"></script>
% U! x5 p- T/ d7 A) a7 ]6 C5 n3 W  + k2 C/ }. ~. ]

; _+ b4 ~) R' z5 a9 a1 y. T; ~  w6 D- @

  F/ d, k2 P" r</body>2 |1 l5 O' M: M  ?" ~5 F! L

8 t/ k4 v) h$ X4 d5 L% V</html>[/mw_shl_code], w; ^6 P2 M  o: Q. k+ r# o

& g6 t4 K2 X: n效果点击这里:
" @4 X& u7 @) Q' [: Q, T! y. ~8 \. ]% U. v" E% G+ S% `
http://plmhome.com/doteam/lesson1.html
3 X7 o+ l- ]5 [# ]5 x  \. g; D
8 B( l2 K! a) I. D
0 u  }; n( D( ?! r3 n8 }7 `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了