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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x

+ h: O! k3 l) H9 c
9 H& i" ]7 E5 o/ B废话不多说,官网自己百度下, threejs.org ,入门很简单。
" }/ g& y, m5 l$ i1 q- i& H) x# j3 Y$ D! M9 ?% l  ~# s6 ^
创建的javascript脚本如下
2 p: _0 _5 O# m) o" }6 V" B  r# I
  w' n" C3 I( v6 Y6 E5 V% G& j GIF.gif
6 I( w$ H4 Y. O" U! z+ M( p3 J[mw_shl_code=javascript,true]1 A" f/ B0 k+ o
var scene = new THREE.Scene();; Q. i4 ^0 j! {# O
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
! k; U" @  w4 l  L% svar renderer = new THREE.WebGLRenderer();/ o9 l( b2 D/ a
renderer.setSize(window.innerWidth, window.innerHeight);
6 N0 t8 c2 g+ u. W2 }document.body.appendChild(renderer.domElement);) [3 b7 V* _" i; g5 i! L% t

2 Q# K8 C# s/ f4 y9 i9 J) e: n// Refresh Issue ) y9 s( h7 z+ F: T1 M$ N$ T/ k
window.addEventListener('resize', function () {
; O1 c; i6 T$ i( E    var width = this.window.innerWidth;
- z+ U/ H# i) q7 n0 j1 p2 M. n    var height = this.window.innerHeight;
* d" }6 s& k4 L$ l# k    render.setSize(width, height);
2 V% o* k+ n# }2 Q' O( ~- r    camera.aspect = width / height;: g. C4 A" v9 l5 ^. G+ q+ |3 o: v  E
    camera.updateProjectionMatrix();% I( V, P8 A" I7 p/ I+ e9 M+ Q
})
% m) [* q0 @% `1 ~/ J& B
% @& z% @5 n* X* Y! X" L$ k//orbit contorls3 y1 g4 e* S& }0 v. P. }' N& z
controls = new THREE.OrbiTControls(camera,renderer.domElement);
4 Y1 P9 X- y& }
  y  T( d3 o1 Q" C//create the shape
$ n7 L0 D& `$ X1 z( W: {8 wvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);
+ n" e) E" k7 g//create  a meterial$ }8 F  _6 e/ F7 Z% E* r. b. H7 P
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });# h' v/ ]% e* E* i9 R9 i
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
( Q9 ], E5 }& t3 Q//var material = new THREE.MeshFaceMaterial(myMaterial);
/ d8 F* N  N0 o. _) v9 C* ]. ?9 t- a9 H. O$ W+ c
var cube = new THREE.Mesh(geometry, material);
. r9 N: K: |) @6 C' d- Sscene.add(cube);
$ b' P( L  b9 K, p# Acamera.position.z = 5;. t2 q2 J7 ?8 f% K" k1 _% L& h) E, x

2 @! r4 P# R! R* A, Q* X, }; W% w- J9 g3 ?7 w$ `( p+ J
8 {8 y" Y+ w% i) M
6 `8 Z, @# y/ \( Q  x0 t6 K

/ J$ `) s, q* o$ \: z8 M//rotate
1 G/ c, y7 o+ lvar update = function () {0 K5 f: Z5 g: f4 F& u
    cube.rotation.x += .01;: F. E7 `3 f8 r- F! a- Z
    cube.rotation.y += .02;
' a$ Z; K2 z4 D9 h$ w' ^5 _, c    cube.rotation.z += .02;3 k5 E$ d5 F; _9 J2 P% K
}
- v$ E4 ~5 W5 {* D& ~! C
4 A8 F  B4 F) y8 h. p& o8 _var render = function () {, ~: k' `' P( K
    renderer.render(scene, camera);
! a: ~$ _1 e5 E}6 D. o" H' [" a+ y# s2 h

- U. }3 m, y( \2 c# T' C5 D  u! ^
7 V  x" M& m3 T  Q6 I4 F0 g* R. w2 t3 D4 t, e
var Gameloop = function () {0 @: k6 t3 d# b) R) y: n
    requestAnimationFrame(Gameloop);
/ k/ W* Q$ o; @( w1 S( p( }# g" U    update();* s* p8 i, h% ?: ]- T# r
    render();/ ^, Z2 \' ~& l; X  v
}$ n6 A" Q& {+ Y/ z2 D* F2 W

( n/ \3 _0 }( @7 e+ A3 u- BGameloop();4 |1 S  d& F+ a6 Y
[/mw_shl_code]
: T* B" \: g# P) n' N5 [1 q( W2 [
) ?6 d) c# x  _
引入争取的html,3 c$ Q! i( @" c- r' I& e3 _
  W+ v  x8 u6 [4 K
[mw_shl_code=html,true]<!DOCTYPE html>
6 m2 F1 t5 N3 _4 b<html>) p) h9 a" X  b: `- b/ z

; l; v: g% d2 e<head>0 M. Y0 L' b5 R0 R
    <title>hello ThreeJS</title>
$ c" m% q/ I7 o% L  R" V    <style>
& b0 j/ h! A1 j- D2 ]4 S, {  l1 h        body {: _6 ]; y2 g8 I  B
            margin: 0;) @6 T: G" C2 [: s8 C
        }
' J7 R. W! a( h% Y8 Q0 S2 {2 ^' P. p, {( e3 m- j
        canvas {
8 q3 c( p/ z& X& f4 {# H            width: 100%;9 h' q. e! p# M2 X% W) }
            height: 100%;
4 i6 R/ z+ R# s8 t2 C2 x        }4 e" c1 V6 ]- |. y2 J

. `7 o4 Z% H; D        h1 {
, y5 z( w5 K. S* O0 [$ G8 J( _            color: aqua;
6 M9 |( `7 H, K$ u+ F) ~/ w; e        }
! N+ V6 j- _0 k" L& B/ E    </style>$ E& A$ g6 }# ?& O  ?, |% Z3 [. `
</head>
; j. S( R% ]' D5 D3 a$ v6 ^: [
$ {7 _' u3 z9 C/ g<body>
$ W6 C# \* M# I) k( `; L. G <script src="js/three.js"></script>
+ y4 p( b7 I5 ^    <script src="js/OrbitControls.js"></script>, y3 [+ ]+ |( Y( |- }
    <script src="myjs.js"></script>
1 Y* e9 i! D) Q9 W' z+ V  
8 l: v# h- K4 {* _% O
( `# @/ S7 f3 ~: ]# m
7 d3 p$ d% T. f# u, l$ n2 a+ U# C8 `4 ~- @" z* K8 i
</body>
& @* \1 [& h* I7 G% U, v+ w
6 v! z0 n) _) a( u7 D</html>[/mw_shl_code]
9 r& M$ S$ l1 q4 @1 a! V9 O& j; `# V; F" N9 W
效果点击这里:' }9 r/ `) c" d/ L' C: W/ A2 X- \, J
- o) o! v) Q, i
http://plmhome.com/doteam/lesson1.html
& |9 N- Q. e2 R6 j
* ^: m$ F% W3 f. G$ k2 Q. I* _, x/ E: u' U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了