查看: 3125|回复: 0

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2019-9-1 18:45:09 | 显示全部楼层 |阅读模式

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

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

×
2 J, m' b6 s# {, ]9 A

6 g4 ~/ @' a2 `: P3 ?废话不多说,官网自己百度下, threejs.org ,入门很简单。
- @2 l2 E, H8 g- p9 w. l6 T! ]- Z, J& }" [/ j( a1 Z
创建的javascript脚本如下- K& b9 B" y# r1 y; b
0 ~  s4 u, a! y/ t6 z
GIF.gif ) }" u/ A3 b6 s$ _! `
[mw_shl_code=javascript,true]
6 L; {6 w) [9 F7 Avar scene = new THREE.Scene();5 t; L3 w* t0 L9 i' P- Z5 l8 g
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
" h% _  N" k2 h" g7 p* w! gvar renderer = new THREE.WebGLRenderer();0 M4 C& B" g* l3 v: c' [+ k
renderer.setSize(window.innerWidth, window.innerHeight);6 f- a1 @- R1 Y) _
document.body.appendChild(renderer.domElement);
$ @& a8 j; m5 z1 Q0 b9 a/ y- M# S$ B
: S6 c3 a% T. y  R4 |* z// Refresh Issue
8 N. K5 r8 V- t( e2 F, n; _: xwindow.addEventListener('resize', function () {
& Y, n& i* B/ |) Q$ ~3 {    var width = this.window.innerWidth;
8 w' r1 p) Y, T) \$ ?  n) o    var height = this.window.innerHeight;  @9 Q' f5 K7 d! I
    render.setSize(width, height);" \8 n+ S: Q( B2 A
    camera.aspect = width / height;
; S( x! O; U! t- n" b* V3 M    camera.updateProjectionMatrix();) |  V% h# e! n9 _8 t
})7 c8 B, v4 p5 f: W# |) R+ l2 y8 L
4 m' F+ Y( y9 ^: a" n  j  d
//orbit contorls$ t/ v- _" t; i& }9 }; s# m7 h! G
controls = new THREE.OrbiTControls(camera,renderer.domElement);0 c9 w8 r9 l8 I. ~6 @

/ ]2 l; \1 {/ `/ n/ |2 }//create the shape4 @. P% n, E  [5 G* S
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
; B  ^0 B6 d3 s//create  a meterial
( E% Y! Z- J! Avar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
% }1 J! v& w0 _; @9 Z//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
5 A$ E2 e* j: H$ J" X2 ~//var material = new THREE.MeshFaceMaterial(myMaterial);
* I0 f% Z5 }) s3 N9 ?' f: P9 J
! `: y0 y: h$ w( ~& ~/ Zvar cube = new THREE.Mesh(geometry, material);- Z* f3 T% \# o
scene.add(cube);
2 V5 d/ y6 G' T! G& ucamera.position.z = 5;
( S% _$ m- g% g* e
' |" Y8 i4 T: L0 {/ C3 e% o
' |2 X, U: A3 \8 u* a" s2 C& ]" f, S3 B  N% {* E
, `* T: A1 @- [+ k& n

: @* A* c( P9 q0 @% d//rotate 3 Q, ], E0 P  b( s( |- v/ B7 N. ]
var update = function () {7 V! I0 X7 _  G5 s8 N' R7 A
    cube.rotation.x += .01;
+ P5 ~  `3 h- ]6 m. T    cube.rotation.y += .02;
8 h; Z( [/ h4 w. G9 q    cube.rotation.z += .02;% A" x. @/ |5 l' n) O% f
}
% \5 N+ q" _* X2 |! g  n& k% U9 b, m! x5 T' }7 T2 F
var render = function () {
- g9 E& X; e1 r2 A& k    renderer.render(scene, camera);" X0 P: }# _" M' j- p% f" x0 E
}# c9 N8 O7 s  `
( W8 R5 a' ~7 K3 F% c8 C- l! q6 t
/ M& b6 t& g$ a

- }8 D$ q: l, G5 g: z( m$ H  I/ K: yvar Gameloop = function () {
( g6 R" A9 e& a4 d3 l- U    requestAnimationFrame(Gameloop);5 F- F( S8 `& k3 n* r
    update();; j" k5 v  I4 a- u
    render();0 R: E2 n& h8 c
}
/ Y1 x2 Y- V2 r  o! g  F! ^9 k( Q" b$ _3 {0 s; c# H4 z) P' l
Gameloop();
0 I6 G  f' k( }& S% g. l[/mw_shl_code]# K; }+ O7 ?( E( [5 O$ z( z& B+ {

) N1 G* C; }4 A: o( f0 R9 m
+ O4 W7 o3 @" }" ]引入争取的html,( z* E0 J1 J" C, v# O

# O) a5 K0 K  G6 H( ]2 J[mw_shl_code=html,true]<!DOCTYPE html>! S1 l- y6 y# ^& h5 i
<html>
7 x; E$ @. L( @( W* Q: E
( }& C" t1 q0 m  g. Y" @<head>
- S5 _5 }7 }& v9 ]    <title>hello ThreeJS</title>
  S: R$ a8 l+ \    <style>: I( \8 E; a+ j, P. }0 t0 M: F
        body {& m! N0 Y# s: L) E# d! y3 {
            margin: 0;( P+ S% G0 v& y9 V5 h. k
        }
2 B+ x# l. q: u/ F4 U5 o
! b: l$ v0 z% }8 d( y  q        canvas {
# N7 l/ W$ n& f+ G2 N( m/ a            width: 100%;1 V+ z& e, H7 ~5 c" o
            height: 100%;9 r( I  @- |7 T5 C0 [
        }
( ]; w" P+ j6 o
; Q# P  M' a6 T9 F        h1 {
1 u2 |3 Q9 C7 J6 u9 b            color: aqua;
; E# ?3 `: G' o3 l% F+ i        }7 Q% N: Z5 p- n- `3 I( I8 D
    </style>
. z% Y4 x) W2 c: r0 G</head>
# U$ E, z% T+ k: b' ]; i, m1 O) b" ^1 `0 T
<body>7 d6 |( F0 _2 L" K4 z4 x. a
<script src="js/three.js"></script>4 d* g% y1 z5 |) F# {" o& Q
    <script src="js/OrbitControls.js"></script>
2 c6 @+ Q3 q5 u; O* u5 Q    <script src="myjs.js"></script>( o/ H. ~* N  c0 |$ {
  
, j7 ?+ _. e- e9 ?. e6 s7 r) H, K" S7 u: s6 N

( o9 f6 r, T$ I) S
3 T# I. O; G% A0 H</body>1 d8 `* P5 U0 ^5 V
4 N: \( s2 f# t: O2 S4 n
</html>[/mw_shl_code]
% C. H+ g# _5 }, w9 R8 |2 Z0 G
' U2 a* s+ m7 z. ?) }3 a效果点击这里:9 q; d8 G  n. I- S
9 d1 Y7 u/ a" y2 v5 E8 _
http://plmhome.com/doteam/lesson1.html) h, k! r6 \+ t' }8 O+ W

: D, z% W1 d% J4 u6 `8 s7 Z- K# p* K! w
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部