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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
: Q" h& o, G& O- Q# f+ p2 R" B
8 C8 \( J9 v$ q- J
废话不多说,官网自己百度下, threejs.org ,入门很简单。! h% O/ ?: s9 \

2 @1 e) K2 Q3 X& X" ~创建的javascript脚本如下% [* z7 P$ n8 K- |# T

2 w+ Q: B, ~- H% }, i GIF.gif
0 f% P0 D( B6 m9 R4 u) O4 t2 e[mw_shl_code=javascript,true]" M, y: k' I$ f! L  k6 E
var scene = new THREE.Scene();: `  ~/ i! X5 B# Z
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);+ o4 `( E& g3 E' ]0 i4 a
var renderer = new THREE.WebGLRenderer();5 N. n. t: c7 \' Z0 u$ i
renderer.setSize(window.innerWidth, window.innerHeight);
* Y4 S- {* [, {. [& ~document.body.appendChild(renderer.domElement);6 ?; T( b3 Z. q  t& l
. e# w1 V+ Y& g3 z% _7 [3 X- M# F
// Refresh Issue 8 P: \& j5 M1 F- P/ x. e& \
window.addEventListener('resize', function () {- r# c8 m, V: l- }
    var width = this.window.innerWidth;, a! M$ H* V( [/ |) p) ^, O" g
    var height = this.window.innerHeight;
# m1 z+ d% Q: a! `' e  z% J    render.setSize(width, height);2 v5 T/ l* I0 x; I& }) f. L. f
    camera.aspect = width / height;
8 l2 W/ u) w: O    camera.updateProjectionMatrix();
) ^9 n9 q9 L# B4 s/ H})
2 R( J, D! L! t9 |" f/ ~4 ?! y% q( W! Y
//orbit contorls
9 C' j+ j" H: i$ Z2 Icontrols = new THREE.OrbiTControls(camera,renderer.domElement);8 F7 H8 F5 D! ~! _# N, |4 f

0 I6 n' u1 J% d3 R- v, O% e//create the shape
+ W$ u9 e& N; g) u* T1 bvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);; @# M$ O* G2 {
//create  a meterial9 Y# }- s5 L3 |0 ]
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });: n3 Q( {0 J) z' n" }9 a. d: X
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
# U& {" Y$ u1 M1 @//var material = new THREE.MeshFaceMaterial(myMaterial);% G' N* f$ I1 g3 P2 e- W3 y0 j

3 k6 z% X0 O# z) B; `0 wvar cube = new THREE.Mesh(geometry, material);. W/ C  O$ L0 B
scene.add(cube);
0 X8 T8 w: n0 J9 fcamera.position.z = 5;
. q. q  d% Z5 }( H; f2 S8 a& {: a9 e4 n$ s1 o# }2 z
& l0 s# L8 p2 O

# |1 j; V3 S* I' G8 @( U, o2 N3 l3 Z" i  R7 R  q4 @
0 K2 }! c6 O" }3 D8 g
//rotate 6 v6 L% ^" K; T8 j% |
var update = function () {9 p0 K* _$ L) L% p
    cube.rotation.x += .01;
  J" B8 _0 K5 N4 q9 m4 b& L% }    cube.rotation.y += .02;
, G* q: m4 Q. d- l, r& `    cube.rotation.z += .02;7 h' E! j- }, d
}
9 q7 `1 D9 u+ `1 D, k4 p  S& O7 n
% _) N# O2 `1 s) j' }) x( c6 vvar render = function () {
9 X# x8 ]# n/ a6 g! n    renderer.render(scene, camera);& s) i  u; B9 n- d' K, y5 j: ]
}" \) \0 ]% E7 J4 G
/ n$ y* A, {% f

4 j" n* ]+ }$ k" r  Z  c+ p2 J  S7 I7 c" G$ I; X
var Gameloop = function () {
( X1 c% t: d- e' n( u; U! d2 y8 v    requestAnimationFrame(Gameloop);: I( b6 D& q( Z/ h( [6 Z$ r/ x
    update();
) L- A0 a" G3 P1 A! w, X1 A+ V7 p    render();  c: u- g, ~; |: R8 {. D
}: P  ^( n9 i% x* f! ~) t

( J" u$ }3 ~( r6 w! EGameloop();& H5 X0 r, G  |! I8 |5 R1 [
[/mw_shl_code]
0 P! u& @3 d; Q
3 g9 Y# N" b  M0 F' F! l$ j
( a+ f  Z' m2 G1 B& }引入争取的html,( Q2 [; K" e8 H) P/ K( v, O

% G7 P6 m: e0 C2 K$ G! |; u+ X[mw_shl_code=html,true]<!DOCTYPE html>& c' X* v6 P+ V" `
<html>
  w# K3 {, s' k( D$ F  B
6 h6 w' f( G% @, Q' s<head>& c6 Q5 J% z6 ~+ ~
    <title>hello ThreeJS</title>( q/ ^/ c% Y' B& O! h0 V
    <style>
* ~4 F, b: g( P+ Z2 W, F5 Q, F        body {
- e. ?4 C6 Q" X* l+ D* O            margin: 0;
( L% v0 a; e, e9 ]! P" L% M+ b        }
) z& t9 q- Z) }: s8 C
" ^; W% g( s: H  Y5 G; m        canvas {- y5 j9 Z+ t) h1 L3 B1 Y6 j; t$ X
            width: 100%;
9 Y8 l) T1 B; j            height: 100%;
5 ~3 K" B7 k& @- t" v2 A        }; X3 W% F3 ?; \% C5 u, t$ e9 m

$ C5 ?3 Z& z, ]! |9 d6 ?        h1 {
9 t: c: j& ~8 L: m/ O* |* R! A4 ^            color: aqua;0 L$ I% |: n( V9 y, ?
        }
* x& X1 n) b2 {# l% b* e    </style>
" V7 \1 b. k+ b</head>0 e5 S9 p+ K! ]" R
7 T' O5 O4 q( |1 A9 E
<body>
1 T) j' R$ u& A7 ? <script src="js/three.js"></script>
4 o: c* W8 G! M( h; G6 @$ d    <script src="js/OrbitControls.js"></script>
  W. d0 {0 n! h. z. N/ ]    <script src="myjs.js"></script>
  P8 n; E! M0 c  
: E6 t2 }! r8 D) m7 I# R  C& S  C. @! y8 `: w1 e

6 d4 {8 y' m* s2 I0 {/ _3 b6 w% @5 G) P: ]8 d; N, y
</body>3 L0 h7 k. F( \8 E6 S

1 j, ?# d% P5 M1 ^3 T% j</html>[/mw_shl_code]
) o3 b: \8 G4 n. ~8 m
9 {, o0 o3 V1 c$ f$ `0 G7 {" W效果点击这里:
- N& d' o/ A. n" e7 D1 d2 B( ^
  n6 Q$ k9 I* T% W  T/ ~5 }+ ?6 Jhttp://plmhome.com/doteam/lesson1.html
, S  _; Y3 d7 f6 f* ~9 a2 E8 C) K. m4 n, l# M/ S/ s! P
- b5 L4 u) _1 i* 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二次开发专题模块培训报名开始啦

    我知道了