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

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

[复制链接]

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

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

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

x
/ }* D* j7 L" q6 Z8 z
5 W5 D4 @: X' G' o& e
废话不多说,官网自己百度下, threejs.org ,入门很简单。
2 t0 p. [* }1 T, l7 h' R- q  l
& S: \2 z* ?/ a- B4 S6 g创建的javascript脚本如下
- j, \8 j1 I) Y9 x" x. S) h& _3 c$ y$ l" r  k# ?
GIF.gif
% G# M0 r) ^+ c1 p" c' Q[mw_shl_code=javascript,true]0 C' R/ P: l3 X+ q
var scene = new THREE.Scene();9 S7 K$ Y$ P9 w$ o1 d: b2 L
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);8 v( w9 k. |. C' @# o5 `2 N
var renderer = new THREE.WebGLRenderer();
7 q. D& D! `- y9 b& q5 v0 G1 Z5 zrenderer.setSize(window.innerWidth, window.innerHeight);
( @' d2 F/ U$ z& v' p* ^" Q2 P3 Bdocument.body.appendChild(renderer.domElement);* H( t/ g& R  I! k
* P* ^* C# p0 E$ K
// Refresh Issue + p1 U* G6 R( _' F  t% A1 Q7 v9 W8 _; ?
window.addEventListener('resize', function () {  ]) q+ q) C* H8 T+ b$ @# @
    var width = this.window.innerWidth;1 r: G) U3 X0 O9 ?/ X- U
    var height = this.window.innerHeight;
" h( U4 ~8 z' p! r% j& Q    render.setSize(width, height);
1 b1 J( `+ G( e% N    camera.aspect = width / height;
5 V2 d3 ?* G" U  P8 _    camera.updateProjectionMatrix();) k! a6 ~) P; T4 C+ V0 I6 H
})# U9 Q4 c9 V3 r# b# @8 v2 Q" C

( u5 v+ E. B% }1 l0 Y% x//orbit contorls
4 @* E9 W! A* t9 z  d* b: \7 c- g. Dcontrols = new THREE.OrbiTControls(camera,renderer.domElement);
6 w' U5 H7 u4 n9 u$ q) T+ r# ?* _& q2 I; h( ]$ p  T. V
//create the shape
3 J4 G5 M+ ?% H" b2 ?var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
. [9 E5 G3 S  A//create  a meterial
. M+ ?& f+ p* F3 i, V3 j$ Ivar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });' Y" c: R9 ~7 e  P, c: y: l7 J& d. N
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
+ R  z$ m1 i) W( J//var material = new THREE.MeshFaceMaterial(myMaterial);8 M5 x! q, h& W! ^7 y

# N' T. J" f8 r- Mvar cube = new THREE.Mesh(geometry, material);# \# {3 n; T2 ^4 K9 e  a
scene.add(cube);) ~7 E/ U/ n6 f( ?0 O
camera.position.z = 5;/ {, A! x! {  [4 G6 N

" Z1 A( l) X8 I: ?# C: x- n
3 s2 t  S" G6 s& M: K
4 [$ H/ m* `, G; h% ?1 o
" G' b1 _) E5 z) |3 l8 s5 G- @3 i6 O- Y/ p
//rotate 2 c/ x; |6 |' W: f4 T) \
var update = function () {
& f% X+ s0 K$ o1 w; ^" `" e, L    cube.rotation.x += .01;
' _, K# y  K8 Q' r+ R1 i    cube.rotation.y += .02;
3 |. x9 ]3 a: \/ [    cube.rotation.z += .02;
+ A3 {0 O- X4 W- }! k}
8 h3 Q/ Z  c' q9 N5 C
# A* V/ }  i+ n* Wvar render = function () {
& ?: W* I8 ~8 L0 _) i    renderer.render(scene, camera);
& n# o& l  ]: x}
) R  W! W3 y3 k6 h( N( D% b+ t* S1 `. f& C
" n, ~  j+ j$ F: r6 q
, @2 R# v# i( z
var Gameloop = function () {4 d$ E6 U! I+ T' `$ I2 s0 \* Y
    requestAnimationFrame(Gameloop);5 Y& L9 T  W4 Q- g$ t8 z. T* D
    update();
" a9 R  X2 d( j4 M$ H& k" W    render();& O* \, m; I5 D- L: d2 o
}
% t. f+ B3 R" x" W, e
8 j8 L  q  L9 c0 i+ ?. ?' N1 FGameloop();7 M: J5 E0 R) @. }: u, X6 A. g
[/mw_shl_code]
( d0 g$ _# I* J6 F! D" M0 c  C" P4 s6 N0 U8 Q& x4 M
. K! W+ X& L7 `8 R
引入争取的html,( b4 ?) K/ B6 u  I% H

' [) K) p9 P* A' M1 J[mw_shl_code=html,true]<!DOCTYPE html>
4 J8 ]# I3 ~( {( L$ _<html>
0 e- t, Q4 ~% r! s
) S. d, L/ G6 ?<head>4 f4 }( n1 n) f
    <title>hello ThreeJS</title>
) Q  [' ^! M( H# B6 W    <style>% `5 t. S1 U6 E" o& N
        body {
9 d$ }4 u4 U0 G. e  i5 F5 ^            margin: 0;
1 s% t% ^+ i, Z$ ]2 z        }
; V9 n! B! w) B7 s; _9 P) d+ X: a
        canvas {
+ D. L( W5 e+ p7 I6 Y            width: 100%;2 B( s1 Y5 O9 B/ U& o
            height: 100%;; d5 j: W; w( m: Q6 _5 \$ s+ Q
        }* @, o9 K' u& z( K

: q! \+ W  g3 ]4 s- z/ d0 V3 k$ U        h1 {
4 \- `* x3 W/ I$ T; K+ z            color: aqua;
% Z6 M9 Q1 V# f& c/ \        }
9 R& f1 S4 h; \7 T- i    </style>0 ?. i4 E' S. O: L2 r! A! {: c
</head>6 @0 R4 v- m7 W- J, l; Q& ^) ]
/ _- @6 Z2 ?* W; B) }
<body>  ?2 Q$ }. M! A, {+ \9 d
<script src="js/three.js"></script>3 D* @9 i  q& J! o. `# u
    <script src="js/OrbitControls.js"></script>
3 R0 n7 ~' a. h2 n7 _8 Z& o    <script src="myjs.js"></script>: k+ H; p( l: O2 n
  
" m8 N1 P: q% f+ t5 |3 G+ ~6 @; A( C* W+ z4 L( Z- L
, ~. f! U6 \' A* {

! |' U8 f: T; P</body>, P5 F" p( ]- c. o& p/ \3 {

  f" b  g3 L' T</html>[/mw_shl_code]7 h/ Q# j0 c" O' V9 E1 ?! Q7 E
2 m) j0 d% B: ~+ g. g2 V2 V
效果点击这里:
1 U9 p. ]1 v) E$ v6 s# Q! i$ g, o) a. D5 k2 S
http://plmhome.com/doteam/lesson1.html
9 c5 p0 W6 E* E5 P% _, ?7 r4 U! D1 N: w1 `- O9 q
3 E- O/ J; c) Z; X, t$ w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了