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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x

) b$ \( J+ m. k) ?" ?4 @# [- _' ]0 @, |/ q' a' {# z
废话不多说,官网自己百度下, threejs.org ,入门很简单。
2 C- z6 v9 n9 ], b& `( }  Z0 `& d6 s. x' Y3 ^7 t
创建的javascript脚本如下
6 _& ?0 m  T: u+ o- v
/ b% ]0 m% y2 y5 [  @' G, f6 I GIF.gif
! A* y2 e+ Z8 v4 w8 r[mw_shl_code=javascript,true]
  l+ L5 b( t7 R7 k9 C  Y- ^var scene = new THREE.Scene();
  u* z( Q6 G* o, P. t+ u; |var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);- k  k& f4 z+ u: E
var renderer = new THREE.WebGLRenderer();* D! R3 q6 W! h& P' m+ V3 O6 U2 N
renderer.setSize(window.innerWidth, window.innerHeight);, i1 w$ U: V/ l& l+ e3 \& G
document.body.appendChild(renderer.domElement);
, F( \4 z/ ?, X& G3 x2 `4 N* t( k8 d: t( Z( J
// Refresh Issue
# Y: Q, f; \/ [! f  q; Z$ awindow.addEventListener('resize', function () {
/ O, @6 E) ^; J* |, [    var width = this.window.innerWidth;+ b" B; q- r- W1 {$ S; p( [
    var height = this.window.innerHeight;( u/ a3 R. ^: _9 v
    render.setSize(width, height);
4 |9 O2 l& h9 m8 q% F. n    camera.aspect = width / height;3 [7 k+ \+ W7 `! y! u. @7 ]4 v
    camera.updateProjectionMatrix();# u( n5 c4 f/ Y+ @
})8 Z% T3 M5 r: @; g7 n9 l4 U4 g! l. f
  \$ t1 y7 X5 t) }, F
//orbit contorls9 U$ }' v" o& g, W
controls = new THREE.OrbiTControls(camera,renderer.domElement);
1 V' v6 l: b) l8 H7 ~) O/ W2 i, G
4 K( l$ ?1 j: ?//create the shape
' |; C# O. F0 B' wvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);0 a8 }, }# R7 ?* T# \
//create  a meterial7 K+ @5 u% J8 Z, z! i3 Q4 C
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });$ }$ p& }$ t' w9 e8 z9 E
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
( d% A* X' D+ z9 w) R$ C//var material = new THREE.MeshFaceMaterial(myMaterial);
3 ?; T; [8 C0 S7 ~5 Q( d# `# E4 `( P9 u+ Q: u/ ~
var cube = new THREE.Mesh(geometry, material);
. L+ u& T7 w1 D9 @scene.add(cube);7 H+ N( a9 U* m7 T: K  ?2 Q' D( K
camera.position.z = 5;
1 n7 i8 |% @( o% f8 d- D5 C/ d# Z% S/ F* h# ^0 F
) k: I3 H: K. U' ]6 t" n% U2 l

: y; V/ D  N& q( [* Z
0 ]4 ~' p. _3 ]& p8 [( s8 h1 w2 a& W; |' F0 _& b9 c
//rotate
+ @$ {4 i+ `: m7 ?; svar update = function () {
) z3 b7 N9 E/ x0 J4 ~    cube.rotation.x += .01;/ X. D7 f- _) D
    cube.rotation.y += .02;3 d, N# H5 ?3 X: L2 T7 I) k5 C
    cube.rotation.z += .02;, t/ V1 v& s, ]4 b7 _" m7 b
}
0 v. A) t8 P4 E2 ~
" L: [% `2 Q; B0 ~/ v6 X( svar render = function () {# i% V; r5 D: z1 l& @, B' u- o0 O4 K
    renderer.render(scene, camera);
% B6 T1 M+ Y) H8 G}
0 `2 k6 x% m4 \# j2 B1 [. S! t% O" {, k. b, u  \

1 c( ]* J! ~/ H1 R" L
7 b! i% Y" E9 K/ x. Gvar Gameloop = function () {7 i/ ]" ~' C% j" H- b4 c+ [: A
    requestAnimationFrame(Gameloop);2 [! \4 @7 w( [. D3 V
    update();
* P+ \2 p4 G: K+ l    render();
! p6 {6 C6 O9 Q2 q1 ~7 z; s" E}+ D  j2 C9 L. l) N- o
% E# |, \" q3 l  f. P; y
Gameloop();( \/ q8 v6 B7 v7 }
[/mw_shl_code]+ ~) q3 g6 u3 k) V$ b$ d) u

  n& Q; _& y; r" z" T0 ]) {3 @! V8 l* I% H. G) o1 M. t5 C
引入争取的html,1 j7 R( R. L7 k% J+ s
& j3 M5 P3 b1 o7 L# w
[mw_shl_code=html,true]<!DOCTYPE html>
" W9 _1 W, w+ J$ {1 c" L<html>
2 Y  c) f; p, X1 H: P! b/ g+ ?3 N- l8 T7 D4 D1 W* ^" `8 G
<head>
2 o0 z# m5 p. u1 Z; Y! r    <title>hello ThreeJS</title>2 w* [7 x( \6 s6 N! a, e
    <style>4 l2 p9 Z" w- R' d* `/ a
        body {& {1 W; @* F& U; m5 i. P* r
            margin: 0;: J& ]' F$ D5 k9 V% s( F$ q/ A  |
        }5 G2 O- q5 E( v' k8 E7 m

' j( G/ T- b7 C$ D% \+ m. U4 |        canvas {
2 F7 r# r! v3 }+ r$ [% {            width: 100%;
' R2 E7 v6 [5 h1 B            height: 100%;; A6 u; z! A. o2 @1 k
        }
' c# H) ^+ w! R# M# g' w0 {' t7 G# }' G4 P. U
        h1 {
0 E8 `* z* k  @: C; K            color: aqua;
. R( ?! A0 a1 r9 Y: |        }! P  y( {  X. r# P. J7 V& }1 H2 U7 ?
    </style>) p+ c- L8 w( O
</head>" h$ M1 X+ ~$ a5 K7 L! K' ^
# q' L& V( A3 i1 Y/ s0 B
<body>0 Q" K1 ]6 i7 _  A  T
<script src="js/three.js"></script># m0 X2 |/ C* T- z$ d4 E. d
    <script src="js/OrbitControls.js"></script>0 `4 K* W( _! T! {) D  V1 I: L9 t
    <script src="myjs.js"></script>
! K; s6 t4 |3 e( Q7 Z* x  
$ J: m! k+ j8 e+ m3 q+ |' V5 a5 L7 r/ D+ Y6 [, X5 O

% i1 p1 }% a2 u- w! }# J8 m
! P8 z- N; R; z; p* K# i, M</body>9 L3 N: f) |3 [# L& ], ?1 e

! C- \  B1 ]/ l  w6 z9 ^</html>[/mw_shl_code]
2 S2 ]# f1 E3 P: n7 x3 l  [. m- ]" C" @
效果点击这里:
; R4 y# A3 t& E$ L! t+ k% {. `/ \! ~* t. M2 j
http://plmhome.com/doteam/lesson1.html
1 c/ G! w9 A+ f% O2 t: W, b' `  L3 c, T; x( H7 r

2 t3 \2 s/ ], Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了