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

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

[复制链接]

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

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

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

x
, A1 V0 S) _6 c; }6 Y

+ o( l/ O9 m" r9 F4 m废话不多说,官网自己百度下, threejs.org ,入门很简单。
9 C# H" |, ?+ `: B2 c% Z+ n7 T, g* A- j
创建的javascript脚本如下) V6 x4 K( _1 }. c7 i/ o
, Y# o5 |) s+ G. O
GIF.gif * Y' E  Y9 K, @3 h) m; D& X* V, h( S8 e
[mw_shl_code=javascript,true]& b/ s! K( l$ i# h6 N* m9 w
var scene = new THREE.Scene();
+ N' K. o/ F4 m& m+ c4 ivar camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
5 u/ |6 |5 G" [  d% `  vvar renderer = new THREE.WebGLRenderer();
3 Y& i7 P7 {5 u4 p. `9 F) V; Y7 wrenderer.setSize(window.innerWidth, window.innerHeight);7 D& k- x9 s" J) e
document.body.appendChild(renderer.domElement);
' k8 L! n2 D9 D: u7 q( u0 K( O# e3 j& L% y/ q' g( w+ g
// Refresh Issue ; m3 {- M- i- I4 X! c9 x
window.addEventListener('resize', function () {
3 x$ \6 w+ W: J& `  i( H9 j    var width = this.window.innerWidth;+ E+ r1 K1 @* _8 X
    var height = this.window.innerHeight;
$ {& n. D* N% M$ {    render.setSize(width, height);
% L. A8 \& p2 L6 X8 Z$ p) h    camera.aspect = width / height;
) {0 l* b' ~& @' g, ^7 x% D    camera.updateProjectionMatrix();
( h6 K* H1 X! {& ~; _, S})
! |; b$ r$ y" a9 \8 m% F' X
' Q, ?6 x. X. K4 z# _* {//orbit contorls& V$ n! F3 ?- m. J8 s
controls = new THREE.OrbiTControls(camera,renderer.domElement);3 \. A9 g& h# H! k
8 T: W& d$ d4 x7 u; n
//create the shape
* c2 {" u! B! j8 Yvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);
7 x  e' m' Q$ D//create  a meterial8 h# j' y8 y3 b
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
! }2 O  |/ n- k//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];7 L) [" l; |" }$ L7 g) W9 B7 ~
//var material = new THREE.MeshFaceMaterial(myMaterial);
/ v  T* Q% {7 q2 V) c' @7 n2 ?
var cube = new THREE.Mesh(geometry, material);
& s: G" n; J% K3 gscene.add(cube);% ]1 W: h; U9 r3 a/ Y! |
camera.position.z = 5;
# r) F; c* ^6 _0 d. F! ]* j' e7 g, l" v* i3 i5 D; e1 u8 j$ C8 c
4 d+ ]- O% F# K% k- U9 m8 o

2 N, v" E: E) O
/ c/ e3 t$ M! l0 w3 r2 z5 W7 |7 A. l( e3 s8 J1 |0 i
//rotate
8 P: |  }' n" l1 Tvar update = function () {# J3 k& f; d* z2 a
    cube.rotation.x += .01;
/ ?# z2 C' v( h8 Q    cube.rotation.y += .02;
( Z# v) d3 W5 y. N2 U* J' \    cube.rotation.z += .02;
1 h! q5 f$ M( N8 ], q1 ~3 `! c}
( M- ?# @$ F1 g$ \2 c
* [- R# m3 r1 ~* U, a- A; t, ?var render = function () {
7 U% l7 X# I) B. P2 Q, i    renderer.render(scene, camera);; W0 M: s7 x' K& G1 f2 _. v4 l
}
' e1 w. H4 K$ M* e/ u, W% N
% O6 h6 ^5 y, g) ~* [& K; D4 w/ F/ D  y' J- A8 X, f

+ a  i4 Z% n5 R3 z/ Vvar Gameloop = function () {& S5 ]( n8 A' O, S* c" K0 `
    requestAnimationFrame(Gameloop);
) k* d$ y& j# k    update();4 m- G- e+ a5 O0 }
    render();7 \( ^, b# o9 |- P/ j
}
  e8 r) i. C3 a6 a9 M: F
9 e" G7 D2 ?! h( O, H2 O" SGameloop();
% {% F2 Z# f1 b# e  M[/mw_shl_code]
& \  V5 |# t: O6 Z2 q1 a
: n% h! f+ q3 Z
9 H3 |  @, D, V9 R. d; |! A引入争取的html,0 S: D- j0 o4 q$ B# S. w6 B
, C+ N# p& \& c3 z/ s
[mw_shl_code=html,true]<!DOCTYPE html>3 S3 q# `" j# v5 _3 z
<html>  U$ g2 B- _$ Q) F6 m( V
7 ]1 \+ K, T! M) s, j" P$ q
<head>
) v2 O1 j* ?  s, t( a$ c    <title>hello ThreeJS</title>9 ~. F8 p; ]5 P) J. S. S3 X/ h
    <style>
- m7 |2 m) k! O" a4 ?" D        body {; H- z9 T5 R1 D
            margin: 0;
+ U0 f9 Q! m2 {8 [% V7 V, m        }
% q+ }# G* L7 _/ I# u
' a1 R- F, R5 z; @1 d+ K4 j        canvas {
1 B5 G' Q9 ?8 X3 e# B7 m% [            width: 100%;
8 p/ b# c" _; y2 v) e3 J# ^            height: 100%;9 h; D( K  k2 h& k/ z
        }! Y4 A/ \, e8 t* ~6 b1 L+ c
& _& |' w$ p# G9 v: O0 X4 w4 E
        h1 {6 s* T1 o* s8 F& R$ U) G
            color: aqua;+ |- e* X! ?" P+ w7 x5 d$ S) e+ T
        }$ g5 B0 C& H' t/ Z& M, ]
    </style>, F0 |3 [' ^; W  q+ e  q. a' I. ~
</head>! k2 N2 g( ^: p5 c) I
1 c' I# j9 X% l* v6 h. W
<body>
, C! L) s3 z( T. D; R: t <script src="js/three.js"></script># }; b4 }( o* n! x* z+ R7 J8 X
    <script src="js/OrbitControls.js"></script>0 {+ d8 a6 [8 _* S
    <script src="myjs.js"></script>
, B  v9 x, w! ?) v5 i  / k. f7 {# E8 Q1 y: r/ [
& c4 i4 b! i8 b" Q

% Z# `" ?. y3 R, |* h: }! V( c+ u; z2 K2 E/ T
</body>; ?+ t& ]( {8 e  M

9 a  v% l3 p  N* s/ ?</html>[/mw_shl_code]
- h1 w- c% N- Y6 g
6 ~' _9 d9 y1 o: |8 j7 P% x/ r效果点击这里:
0 C2 T: v9 G: k7 P/ {# q# T0 i
1 v& O9 i& X$ \/ _# g, \% F( z4 T1 vhttp://plmhome.com/doteam/lesson1.html
$ e$ e- ]/ d) j
( h6 K7 d$ K" R1 {- d/ M: Y$ g) m" }* m, {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了