PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
0 M  [  T$ t/ r: r* e

' p7 v- a& J% J( D" m# \废话不多说,官网自己百度下, threejs.org ,入门很简单。" t% i1 }) B, i3 {( r  y

' o7 L0 Y7 h7 Z5 g$ @) A创建的javascript脚本如下' W0 t3 T0 \8 C/ N, P9 E

% f! p4 p8 G! |* v1 n" m; k GIF.gif ( O. T7 }  |% _3 U* K$ P( }5 X
[mw_shl_code=javascript,true]
' T/ B! |8 J& p4 b/ \, ?  w; t+ e; ivar scene = new THREE.Scene();
7 Z$ e1 v: l  _, F9 Q& s! yvar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
  b+ R+ q" M9 Lvar renderer = new THREE.WebGLRenderer();* T! H* R% X& E
renderer.setSize(window.innerWidth, window.innerHeight);
- j6 S+ U  f& F7 @4 Ddocument.body.appendChild(renderer.domElement);- ^( F$ E( @2 P$ i+ m  B' c

# l1 n  l# {: J" q, E& s// Refresh Issue # Y- t! O. J+ h! b4 @3 N! l
window.addEventListener('resize', function () {; k- F1 i$ C* g9 q8 s9 [6 ]
    var width = this.window.innerWidth;
3 f; O7 j- G& ?, l! a( S( K" i/ X    var height = this.window.innerHeight;/ K/ w# b2 A$ Y, Q' R& O
    render.setSize(width, height);
9 [. E* t6 K% Q8 `' \' e: q1 M    camera.aspect = width / height;3 d) ~- \* O: o3 ~
    camera.updateProjectionMatrix();& @* z- s, S" D
})
) }7 ]( X; W. h3 E7 b- T0 j! R* g% j* b/ \& p
//orbit contorls
5 H- J" [3 {/ fcontrols = new THREE.OrbiTControls(camera,renderer.domElement);& O5 J/ x/ N) [* K5 V/ g9 L' a
) R, F3 K& T; w, }
//create the shape
. I8 T  u, b5 a" W) F; H" X% Uvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);1 c7 f# a' f2 V6 i. r6 ^
//create  a meterial* Z( J2 m6 a* X; S! C" \& t
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });  z. W/ [- p& `+ H, h
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];# n; Y* @6 R' R! n, \! A# j
//var material = new THREE.MeshFaceMaterial(myMaterial);
( [3 Z$ Y" o% ^& x9 R% e
( L0 ^6 }! q; x" _var cube = new THREE.Mesh(geometry, material);
9 ]& B! }+ i, w* [) X0 o$ Q. Oscene.add(cube);
# m0 D" W, O1 H$ t, Q. q/ }camera.position.z = 5;
7 }3 j+ ~8 r+ j' e( X
/ V0 l) G6 d4 `1 Q$ H- x. b# A; z6 [

( v  y2 t7 t; u. |
2 J1 w8 J; q# p- V7 R- k" j. F( P& P3 a+ A+ D, m9 u
//rotate
$ n4 ^) ^! v- x, [var update = function () {7 l$ i- w2 y1 [. L& k" o' W
    cube.rotation.x += .01;
% |7 |+ J3 A2 \    cube.rotation.y += .02;
( h- ?& z; P8 w# U' |+ o, K  H    cube.rotation.z += .02;% ^. V( X3 h/ d& [
}
; h. o8 @# E+ f- z& j% h3 L# l
; u+ c. p6 A2 C0 ?6 [var render = function () {* D8 Q/ q7 i9 M5 o- p( {" J0 i
    renderer.render(scene, camera);
( b$ p+ r3 w6 o1 |3 J1 C}, ~$ ?! g& c, _

/ L- h. K- s" B' c2 r+ U" ?# m0 p+ S1 t. k. t/ P

9 Q& Y* i/ Z" t2 s6 M# r9 S! I; g5 K. ]. @# @var Gameloop = function () {
) P* w3 \5 V+ B$ z% R& K" l    requestAnimationFrame(Gameloop);  Q% w3 t' S/ V
    update();
( Y4 @5 I! }) N( z    render();* Z1 R( L2 q4 e, R% r
}, p2 c6 l; c8 S$ i
( P+ ?( u$ S1 q! E( p
Gameloop();+ o) e" E7 I3 B) \2 _# A
[/mw_shl_code]; t9 Q  H0 k4 l
+ f- ]# O) ^' l$ j. R$ n, H
' o3 U, R8 v  C7 U5 _8 A( `
引入争取的html,
/ N2 {- P7 i. `. j- c% D4 J3 `
% w" w/ P( N5 _, q% L/ V4 K6 y[mw_shl_code=html,true]<!DOCTYPE html>
) Q% |- ~# K0 g" ?! P<html>
: _( F, O' I8 g1 l5 h
$ k- i( [# y" c/ q7 P, b: a<head>
4 q& Z  `1 T9 V5 d    <title>hello ThreeJS</title>' J$ g: Q( [4 [* k+ j
    <style>
# }: q- J; I( Z- G        body {
! ^/ _* M1 Q/ _/ ?0 _            margin: 0;
4 s4 b$ f. n7 H) B2 {        }5 E" H2 ]& j; y0 C! N( G

. v0 Q! h# y8 t& H3 Z        canvas {
7 L0 H1 H5 r( H7 j+ K# `            width: 100%;. ~/ i7 Z" H7 r- |* U# }
            height: 100%;
/ J" i7 @9 S. e4 e6 ?4 c  d        }
* ?; u) u  b4 U# _8 T2 W" A) |3 \7 u6 M
        h1 {
. g' A6 R1 N0 J' X+ J: {" U4 z" T            color: aqua;: H; G8 j7 @- D# N
        }
- t" ?+ }9 @( u# f    </style>3 N+ D$ s! I) v1 P" i1 X- x
</head>. q; y: k" \! q* p# n" S

- w  J5 d4 A0 M1 C1 f<body>. f! r5 \4 h, `5 j/ l
<script src="js/three.js"></script>% \# y$ s6 ^) E, ?$ Y! j
    <script src="js/OrbitControls.js"></script>) @0 G# L) a/ I5 R
    <script src="myjs.js"></script>
" Y9 T1 x1 Z  ^* [& S7 K  
/ N" C) j, h- e- o
" h4 W/ B3 w  o, v6 t& Z- L
8 g' f# b  m, B" J! O* r7 @  [. C! r" B5 C6 |# ^6 v
</body>
7 V3 D  q: X' }! \( p2 |& i$ z# s- }" |# j1 K7 M$ j. S5 [
</html>[/mw_shl_code]
/ t6 ^1 w' d5 P* `; P; M  m% K; m, w$ t
效果点击这里:; A' A4 B) ?' g
, c7 Y6 b8 e$ b! e4 l5 g
http://plmhome.com/doteam/lesson1.html0 q$ Q$ Z8 O# S+ n. i6 ]4 Q! o
! Q6 v  I/ `# |: k

. n9 W* q+ J% {; J5 R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了