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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
8 p! t5 b0 v  z- x$ @; m% G3 x
& u8 p: ?- l8 G6 f/ @6 k' I* S
废话不多说,官网自己百度下, threejs.org ,入门很简单。
* _! S/ M) d* x* y( G6 M* q
3 r% Q+ Z, O$ Y) G5 {& V2 P$ |* P创建的javascript脚本如下& u" O. c1 k7 L9 {% y
  z. y) k& }' Q4 }0 V5 ~
GIF.gif 5 S* f& b3 z/ J+ p8 l
[mw_shl_code=javascript,true]: [- v$ l5 K8 }/ d7 ^1 x
var scene = new THREE.Scene();1 A! w: X, O, }, d5 l4 a
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);; |+ k& d$ _" ^1 _1 z! A% k2 {2 c
var renderer = new THREE.WebGLRenderer();
1 U0 H: {% j" Z; L6 G. Rrenderer.setSize(window.innerWidth, window.innerHeight);
2 `+ d7 ^' H& ?$ g9 W4 |9 Y9 [8 f. fdocument.body.appendChild(renderer.domElement);
( F7 W3 {% w7 P$ F6 |) Y" u$ L3 T. I6 g8 N' o3 r
// Refresh Issue - j" _! z* |0 X+ x. g5 Q; i
window.addEventListener('resize', function () {
5 L0 V) y; B) F; M: G    var width = this.window.innerWidth;
) Q- Q/ ~$ M0 b) T2 A0 T5 A    var height = this.window.innerHeight;
2 a) q, w* `& [; L5 q    render.setSize(width, height);
+ U7 F4 R. C6 G# {) C0 K    camera.aspect = width / height;( o* l( G: e8 Z5 T
    camera.updateProjectionMatrix();  C1 O2 X/ m* C# {* J( @0 G; H
})5 l$ T: t, D8 X* t& K2 V( S- F
, y9 Z" L1 s  C0 E' T& E+ j' q
//orbit contorls. X, M6 i9 H+ j$ d8 c
controls = new THREE.OrbiTControls(camera,renderer.domElement);
% m! p) @/ c9 H3 g; s8 U' [7 t2 t1 [% ^# r3 [
//create the shape
% m6 _2 g7 X5 u1 Ovar geometry = new THREE.TorusGeometry(2, 1, 16, 100);" C0 s* V# b) o2 R5 x$ s
//create  a meterial9 S! [/ J- [; n3 v& B: u
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
/ ?& w% P7 V5 E, e; P# \//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
9 z; z/ q; C- W( K1 e2 `& v//var material = new THREE.MeshFaceMaterial(myMaterial);
* U% @2 w& N+ W$ J
( P# V4 S" T1 b. `var cube = new THREE.Mesh(geometry, material);
. _, j6 f8 d2 ~/ G5 l) n% A: ~scene.add(cube);6 W; t1 A6 R$ Y* R5 H# w
camera.position.z = 5;
. X& T9 U  \! V! ^4 u
$ n+ L7 C8 |# V! k; l/ @7 z; T# |' g- B" Q- f# A) {. d( U0 N: p  ~
  W9 V* S8 T6 `. u8 @' M
5 f5 {6 A) H; K( K0 ^4 [
4 O, ?* m" i0 V6 n' r6 B+ D
//rotate   [. n! U1 s0 c3 Z# i
var update = function () {
3 o1 A, o' r' J$ N, j    cube.rotation.x += .01;8 y5 }- K5 U% s6 v2 l: _
    cube.rotation.y += .02;
0 T0 M- b0 a+ i' u" b6 R    cube.rotation.z += .02;, Y) s. o8 c4 Q- M1 E
}
. D) c% y. ~% N; g$ u( R( u
) r5 s0 i8 i+ F  g! H7 Uvar render = function () {& G/ b5 T7 }) C7 }7 V7 ?
    renderer.render(scene, camera);$ @* }' U0 O! t1 g
}! U9 w6 z/ M* @

7 q: K. m% A% s9 H
6 D5 _/ R" l( |1 K" r
) s8 }) w- R0 O( cvar Gameloop = function () {4 k; o: |. l; Q* K
    requestAnimationFrame(Gameloop);. B' G+ c+ |+ Y- f/ {
    update();; p: f; @- r8 O" r' \2 D/ D3 g; t3 \7 d
    render();! ]( }( D* I" I/ D# Q; z
}! R9 @- w: N: ^# I6 @
5 `, Q+ E& i. x4 q
Gameloop();
: L( w: j  h' r) O0 y4 G: k6 y/ U[/mw_shl_code]) x# D1 A; r* d; d0 k, f4 v, V( q
6 J" e7 y4 h3 u. r1 e: s7 `
  Q) S& g1 x5 _# i
引入争取的html,( O% H- t6 g6 h) [' t: C+ k# O9 A
0 x8 @2 O* `6 x5 \3 v8 k( H/ Z$ C
[mw_shl_code=html,true]<!DOCTYPE html>: W9 C+ U) H4 Y. t7 M# D) x& g
<html>
% V( A) f; E: ^( _2 O* J" L6 O3 U, O- S* d
<head>* k6 b' A$ d* i
    <title>hello ThreeJS</title>
9 }$ J9 R7 w  N# m, d) A( W& ^: Q    <style>2 k, ~: B! {) j. h4 a( ^: P; b7 G* X4 A
        body {3 U7 m9 x, h9 H- U& n  x
            margin: 0;+ ~  g# l) c* f9 u2 V" i
        }7 q9 R6 C7 P) m) G! U+ E+ V

6 l5 [- ]/ Y; G4 D3 r        canvas {3 V8 ]. z# n3 h" u! q
            width: 100%;
' H' Y* Y( u4 U- T1 l4 l0 S            height: 100%;$ k/ \5 T* k5 b  e4 Z' K! K
        }8 K0 ~  @+ f6 E4 x/ q
& [, e/ J& e& s1 m
        h1 {
0 `5 w) T1 @- G- M( g            color: aqua;
9 b/ f5 R; ]2 v# @) W$ u5 k        }) m& B) v( z0 T8 f: L
    </style>
3 p+ l- e. F6 I0 j; f+ x</head>; w% @' u7 x6 u. t8 i5 s- p* ^- X* ?3 r- N

9 [( Q' h; T/ f0 i- \% q' `<body>
* ^* e& I6 X1 I4 n6 a <script src="js/three.js"></script>+ B  M6 i. d; |) {/ ^* c: M
    <script src="js/OrbitControls.js"></script>6 ^5 c/ Z- j* s: f. J) S
    <script src="myjs.js"></script>% ]2 H- o+ u  ?3 M
  5 A' s! [0 W& L5 g/ s: u
1 Q. s. d# S% I% e  y2 V5 L' V
( o, l3 B0 B% t! g: `

2 t: h6 q2 K9 {  R4 A3 p' r! m</body>
% `. m  Q; G% B4 z3 e% Q$ S. V( ]. \" r' [
</html>[/mw_shl_code]
& {3 q0 M' i8 [: C- A# C6 v. l- G7 }6 O1 Q/ s! o# ?" h; o5 L
效果点击这里:
) [) f4 v7 `: T& b5 K
' A+ I# f% ^$ w9 X% rhttp://plmhome.com/doteam/lesson1.html
" G7 {9 `: B  s9 V
# D5 P! w6 V3 m- @  U8 A, L( S1 o- T2 w# J- k
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了