PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

admin 发表于 2019-9-1 18:45:09 |阅读模式

admin 楼主

2019-9-1 18:45:09

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

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

x

; u  u( `& ]9 I' L( G2 ?4 @+ K- J' s- @* j
废话不多说,官网自己百度下, threejs.org ,入门很简单。
8 @# B( v9 e; A) l# R; Y0 B/ {" x1 E/ Z0 V. n
创建的javascript脚本如下
4 L% V6 D$ q- v8 s1 B$ I. V: E3 D( d$ v) \  W
GIF.gif
( r4 ], H. d* c' Z[mw_shl_code=javascript,true]/ q4 E. \+ Z, S% t+ J. a) x5 ]" Q
var scene = new THREE.Scene();
! [) }# |; z+ |# |! K) C& Uvar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);+ g. ^" }) B/ W# [: E' G
var renderer = new THREE.WebGLRenderer();# L- e: a6 e6 P3 y% N  E& s' Z
renderer.setSize(window.innerWidth, window.innerHeight);5 [+ C/ }' s' F8 G
document.body.appendChild(renderer.domElement);1 }; u6 @; a  B! m' v

/ E9 f6 h" M8 y2 f$ `5 i8 Z// Refresh Issue ( L4 v) A$ X* B- x
window.addEventListener('resize', function () {
) A- i6 X8 f$ `; l! J2 S8 A0 X' ~( K  p    var width = this.window.innerWidth;
1 r6 k9 \& n. {    var height = this.window.innerHeight;
; P5 G; A$ }. s2 d    render.setSize(width, height);
7 M6 q! a: D$ r* e; f& z# l& P    camera.aspect = width / height;
8 ^6 @! t, G  G( ^3 U( W- X    camera.updateProjectionMatrix();
& f7 @: L( x/ b- T7 s7 b})! A/ d3 S9 w. I$ R$ G: b2 I

: M/ C) u% [* s1 w* V//orbit contorls
5 s8 J  m8 W, f% c# Fcontrols = new THREE.OrbiTControls(camera,renderer.domElement);! B7 b" M: G/ F8 h; O3 W5 h4 S) G

3 B5 I/ Q, q! l& W' h2 P% M//create the shape
& K9 E1 W# a0 V7 i" i8 l1 b3 L3 ~$ B* u% Tvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);
- N, X: z/ A; t2 O, A, q. [) A( T//create  a meterial: j. D% r7 y1 d$ _" O
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });4 O! v1 f. R* G. n0 w6 `: x7 T
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];' v) ~( I! t4 i: R' ^
//var material = new THREE.MeshFaceMaterial(myMaterial);. j* t! o' G  [  _
- Z1 o+ ^0 r3 W8 U
var cube = new THREE.Mesh(geometry, material);
3 z$ I8 m( {6 }" ~' b7 I7 q2 hscene.add(cube);
. N  D; W0 A( i5 [6 T; o6 @camera.position.z = 5;4 n! k( M. o7 }) e' E  P4 m

- E" b$ L* t2 w6 l- d* Q1 v0 [1 u9 r" j  N
$ h2 \+ e) `5 v% i
# @8 @" x+ T$ @. D, L/ o  ~+ U, C
3 F! A, f5 D0 Y4 Q7 t9 {7 }" d
//rotate
+ r# F- m# U* [6 p& n" A* mvar update = function () {" Q- c; x  \: r: f$ J# w0 i
    cube.rotation.x += .01;
3 p& P! b4 V( \* d    cube.rotation.y += .02;6 u3 Q2 Z- Y0 B. O- O" u% [
    cube.rotation.z += .02;, h/ j" h9 R/ Q/ f! J% Q* o# L
}
! i1 N7 B( Y7 v' Q
  t1 X; c, I3 H7 ]+ Evar render = function () {
* T2 d2 U% F  g! M9 [  U) ?    renderer.render(scene, camera);. r2 I( B; L* j+ c
}
5 o1 }. e9 I( Y  t2 F; e9 X; w, I$ P
! {2 q" N& [* h2 p" P

+ d+ V: G: B% z2 ~  v$ c0 w" l! Gvar Gameloop = function () {6 T! V' |1 @( b% j+ R
    requestAnimationFrame(Gameloop);# ?4 [& v8 F5 q& l
    update();
1 C" Q% i% |: g# p0 i; W" P    render();' X2 V% t% S3 W: H7 u
}
+ e+ O2 o. ~' |" B* C' O6 p" T# Q& \7 ?" w; P* Z- i8 r
Gameloop();
  \' n4 }6 e- _# S5 m1 E- e[/mw_shl_code]2 j- |4 q$ ~5 T( U9 \2 p

4 C# L( C3 }( w* ~3 C
5 t8 w% v! {, o/ W& Y% y: E( X引入争取的html,
4 b& H! y8 M2 G7 U+ l8 |
& A2 T/ u1 [8 @% b4 f  A. S2 L[mw_shl_code=html,true]<!DOCTYPE html>9 |+ p) f. I# }4 t
<html>+ v9 n! W: d* h2 `9 |, y2 H

& e  `: v2 D& d3 p3 `<head>
" I1 z! o& m# Q9 l7 m. `6 h9 h    <title>hello ThreeJS</title>: S. |, z# a7 k
    <style>
" r' N$ q7 t- ~) t' I9 {# E+ I        body {) ~( C, C9 J; T/ w0 e* d+ o
            margin: 0;
  T1 l' V& r" J5 z        }
& \& M: `4 d8 h& U& b" r+ L0 U+ {$ X6 i' C" a6 E! w, V
        canvas {
# o& |2 O9 |% _  t5 g            width: 100%;
5 Z$ S( c, q9 \            height: 100%;
9 W6 ~; @4 k" v  X        }/ u0 l! J8 u# p  B" S; N, S+ ?- Q
" _2 J+ j( z: {8 F& F4 P
        h1 {
/ Y" a4 j5 X! G' R& h9 {3 z! _            color: aqua;( f, h3 e+ ^" c# C2 C0 O6 B
        }- X1 E$ @2 c' g+ Z
    </style>
% h# K0 B* Q: S+ C# X. r</head>
# Q' {- Q1 P6 f3 l; r- ?8 y: b7 n) K; U, g+ ^9 p. d
<body>
* b5 V. p' \; g6 @! H! q: ~ <script src="js/three.js"></script>5 B3 n2 [, r* y  }4 N- F- _$ a$ o  b: L
    <script src="js/OrbitControls.js"></script>
- I, k8 d( g( E" b/ x$ j    <script src="myjs.js"></script>
; W) Y& n4 w, I( Y" o4 t* ~  
% g% G) }* }% [' L/ p& x
4 e% Y2 S# N. J  B. _  j/ O
5 g, [9 Z9 k8 m
" {+ [' P) A% b</body>1 [* k# J% f+ H- Y
! H+ l4 _8 ~, |( E. B4 l5 m
</html>[/mw_shl_code]( M' M9 m3 _2 ?
: k) ?1 R( h  Q  Y
效果点击这里:+ @, T! Q/ B  p6 M0 A
# {# F, w6 `# m) C
http://plmhome.com/doteam/lesson1.html
- `) |& S$ Y6 h; _6 q  l4 }. b% H" q1 v7 O
1 Q# Q- w1 N) M. O3 Y( T, Q% B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了