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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
+ m/ ?3 h8 ]8 N. N1 x- |
& t# `# m9 L9 w+ g& }
废话不多说,官网自己百度下, threejs.org ,入门很简单。
9 T! V6 g" B  {' s
1 y5 z  C! S3 i& [- E+ d+ |% f创建的javascript脚本如下
& H% p. g' ~* h$ L
+ U( J0 q: t# ^: A& e! Q6 N( L" g GIF.gif 5 o/ ?4 H" W2 q7 A( h' H
[mw_shl_code=javascript,true]$ R4 r, l& ]8 u; t
var scene = new THREE.Scene();
  J. S2 T) v; O" \4 ^9 x7 k: W% f$ fvar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);2 `  ], v  x- ?5 [+ C
var renderer = new THREE.WebGLRenderer();
! b6 f5 `- |& m' k; E: ^! trenderer.setSize(window.innerWidth, window.innerHeight);
0 W& [: a- _! ~: G& pdocument.body.appendChild(renderer.domElement);2 q. n6 t; w; I4 k$ e, K% i
% _! f3 W/ L8 ]* W+ R+ Y9 ?. {
// Refresh Issue # a+ W" [2 J: I  ~2 {' J
window.addEventListener('resize', function () {
5 `: k2 v/ D0 N9 d% a+ {    var width = this.window.innerWidth;
! k; u( M- s5 p7 f4 S    var height = this.window.innerHeight;
; x4 X9 c2 u1 k7 p) Y    render.setSize(width, height);
" Z6 k. d( l2 k. G    camera.aspect = width / height;
+ n7 m6 D, a/ g% z' \0 m& x/ s    camera.updateProjectionMatrix();# [# l5 }" D# p7 y3 i7 F$ U8 o' Q3 O4 A: W
})' a% s; U- T1 u

: J$ [9 h* a4 E% Z1 p2 {* [//orbit contorls
; @9 `, t4 \' w# W! k$ y8 Z! xcontrols = new THREE.OrbiTControls(camera,renderer.domElement);* q+ I: h/ d6 E! j9 |
; W, k7 c% f3 {
//create the shape
6 q9 T) s" T7 v8 a1 V6 ?var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
, t/ @8 t5 X* |2 V+ h% w//create  a meterial* y4 @8 B1 u2 b& ^7 u: c. k* ?
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });  m- d' }- S4 s$ ^
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];% t( x* q' h% M9 o5 G4 H0 G
//var material = new THREE.MeshFaceMaterial(myMaterial);- x. ~/ O) _3 ?+ g

, u/ r% U2 R* r# n; C2 ?) g6 ~' Vvar cube = new THREE.Mesh(geometry, material);
8 \5 L8 M" C& Z# Sscene.add(cube);
2 W) A+ v: ]. C5 y) N) Tcamera.position.z = 5;0 J: t) d0 v' c6 w. H# }

: l7 y( d6 E, r8 |  ]9 p
3 w# Y3 ?. U/ L% K, R: O( P5 y4 [8 p5 g$ G% g3 M

/ f+ v! S$ G) k3 h; L4 d9 ]
: h# k0 r0 l9 S2 @# B  ]$ }. T//rotate
0 m  j3 J- |# g0 b9 X, v% x9 h! r7 lvar update = function () {) [* i! B% d) m, p
    cube.rotation.x += .01;
' [  u7 _; n& v( n* u; k, m    cube.rotation.y += .02;
$ V6 v+ m& Z, \6 {    cube.rotation.z += .02;$ ]) ?0 `: C6 y$ f, Y( w
}
+ z3 I# O# B9 r: m: M- I, M
) ]: `. ~: z0 {/ Wvar render = function () {
  E, _2 N" I2 h, }& X" D    renderer.render(scene, camera);7 x  F2 _+ y( G+ ]7 K$ t
}; T0 h4 W* L# ^  G% t
; Y, Y) g" f( M
0 `% c, a- k, ~
; Z, t0 L: @2 ^1 G; m$ i
var Gameloop = function () {
6 C8 p+ b. i9 N) v$ b0 y% m+ A    requestAnimationFrame(Gameloop);0 x( H; I$ o5 e5 ?; H' Z  d7 {
    update();
7 L. J5 h! e( A3 u6 j" w. P5 v    render();3 K8 w1 {- R) w  N! x
}
" y7 X& E# |/ c4 y! m0 L* y" R  W8 o" Y' }
Gameloop();& L2 x1 P; t' h) A2 {
[/mw_shl_code]2 K+ R/ q- K$ M
6 Y9 O9 a) l# K" p5 z! c/ O

7 C* W8 i4 `: M2 t% N0 r0 r/ P引入争取的html,* T& d/ U0 x& ^/ m; _, j! }* l! N( u8 i
+ {4 H3 H$ ~/ W) \% c* I
[mw_shl_code=html,true]<!DOCTYPE html>
7 |/ n6 a% k) H7 I) ?; y6 a<html>
  G2 y$ G. T% M" d
/ I& m! Z" W* B# J- A$ D<head>
+ w0 {7 E! v8 x  n6 J    <title>hello ThreeJS</title>/ v. G% i5 k* U) |# e- o& c# x
    <style>+ v; w0 N+ j4 {- M& |, A5 v
        body {) H7 ^( `6 W7 n$ B
            margin: 0;: N' @$ [1 R+ d1 _+ a. R
        }
* l4 _) _2 @- Z- V+ e( D( ?$ r0 q6 L" T8 S0 @/ @' Z
        canvas {; s/ e/ R, Q1 g- t0 o# p
            width: 100%;$ O* \- \) a$ Z0 V) Z0 D3 X
            height: 100%;
) I5 U- {" y% L. F6 l        }( T0 ?3 i/ _* Y3 ]! a! [9 U! }

/ V: k  @* S. E3 V9 d, K4 j        h1 {, r6 o6 ?/ g$ R: J% K
            color: aqua;
& j/ _# k- e+ ^+ r, a' ^6 D        }4 T4 K" O4 y3 g5 N# ]3 t# H/ J0 h. L
    </style>6 G! A0 Q# }& u! A7 B& n) ?% g
</head>6 `5 g* {: |! x

# S8 E, J  ^5 N<body>1 _: Q; q0 V$ j4 \
<script src="js/three.js"></script>
4 i( B4 X/ x7 o2 q& d) m    <script src="js/OrbitControls.js"></script>; d4 _( T, N# [& k7 w- O
    <script src="myjs.js"></script>
: Y7 @0 R& M6 M5 y  V, J3 T+ v  2 }! D+ b& ^& s0 {9 T, e; b; D

4 Z- N7 e+ r+ _* z3 l7 @/ v1 q8 R0 T  N5 n% a) t

! [( {8 ?6 c% Y/ q& v2 _</body>
2 D% i, E3 a% Y2 K! ~( X0 q" l" e3 a% `) `1 n
</html>[/mw_shl_code]3 \% \9 c5 R# e# f
$ T2 v2 H! e& ^/ H5 P+ I
效果点击这里:
. o& U  C% ]: F! `* Q. [2 M0 n& Q
0 `- }- J# S3 ~" Rhttp://plmhome.com/doteam/lesson1.html
; f" q+ Z4 [. y& k8 W, Z2 ?
( L4 _8 y. ^) t- m2 j$ f7 R* L9 N; u- b( N; q" V. K2 C
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了