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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x

5 ?8 R1 S/ g4 p! Y) J+ v* i0 @7 c& g8 l$ D& \* A
废话不多说,官网自己百度下, threejs.org ,入门很简单。3 x5 |4 G3 j0 E; C% T0 E7 G6 F  o
, O2 ^' s  i" S" _# j- a/ x4 a
创建的javascript脚本如下
4 T" l- v/ t% R" L% w6 _# O$ Q% G
GIF.gif
' K4 j  A2 W; O% |3 p6 `[mw_shl_code=javascript,true]
) T* s  _3 L7 ]9 k; jvar scene = new THREE.Scene();1 H" n) z: `2 Z1 c
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
9 P9 @8 f' g) z+ W- dvar renderer = new THREE.WebGLRenderer();
% U" a4 Q/ p7 F% x- m  E! _% grenderer.setSize(window.innerWidth, window.innerHeight);- @2 X# W8 R% x
document.body.appendChild(renderer.domElement);  O: q3 h: U2 M5 e& p
; N" @) N' |: Z% j" d7 a$ ]
// Refresh Issue ( Z/ R1 n1 O' r4 C+ U& |& C
window.addEventListener('resize', function () {1 ~4 O. C% {% ?, w2 {/ e  O
    var width = this.window.innerWidth;
7 d6 \9 C' E; T, T. t    var height = this.window.innerHeight;
; W) J6 q9 |- P7 Q+ X: |' Y    render.setSize(width, height);( ~& J+ F0 e" X/ w7 {
    camera.aspect = width / height;9 H( k* R4 L+ Q8 a1 y
    camera.updateProjectionMatrix();* b- O: Y& b+ }% u1 N
})
. Q( t' p6 J( }8 m' [. S
0 e" m9 v; _, i3 G9 X. r  p2 v2 f//orbit contorls7 E* y" b1 T+ A) j9 h7 e3 c& @
controls = new THREE.OrbiTControls(camera,renderer.domElement);
* T8 V+ t1 o* M0 M9 K
4 e" f$ }0 |9 Y! _//create the shape  g6 v: T- M$ S  {
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
1 a9 D8 g" V5 F+ c! w//create  a meterial
; D7 S' a) D' M% q% P4 W1 Hvar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });; l) k. F  y0 Z
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];- D( E" F2 N) C3 U
//var material = new THREE.MeshFaceMaterial(myMaterial);
3 {1 d! H$ D5 _7 F5 |. i* k9 R/ D/ I; u, z/ e2 f% T& z) I
var cube = new THREE.Mesh(geometry, material);4 {: J* u( e/ l) C$ F3 s% D8 R8 ~
scene.add(cube);7 E' n- m. D% A! ?3 X* Z5 _
camera.position.z = 5;
; }5 @0 q# x4 h( X3 o
% \5 y" e0 i, ?& {# D  P
' ?( e6 O# H+ j4 y# p  Y" T
& e1 m/ N1 D; N/ E1 e; ^* X5 j/ Q$ [

( E7 h4 Q, S- B//rotate
' {0 b; \2 b2 Q& }4 N) F* Ivar update = function () {) G1 W! D  h: L4 q6 j" T
    cube.rotation.x += .01;* a" i/ _. s$ `) g- p! ^% J8 r- L3 @
    cube.rotation.y += .02;
4 i# U* m! T' L  O    cube.rotation.z += .02;
5 |1 e1 I) S# L- R+ n, x}8 i  [" h7 {$ C- n
9 J0 \: _! S( z/ k& o' Y
var render = function () {; n$ v' }% S) G" j& b
    renderer.render(scene, camera);; ~( N/ z+ Z7 y( I; w
}
  |! M4 `$ ~! w. H+ s8 |: z5 _8 ^% w2 H

3 E5 T7 b0 z$ D/ r) Y
2 P: i5 ]$ F  m' \! _* I  yvar Gameloop = function () {8 r7 S* {  I: i2 X, X# d
    requestAnimationFrame(Gameloop);
# k0 {0 _( s1 ]* G0 ^    update();9 @! j% k! ^' o5 P) {5 H1 T
    render();0 R, J- a% p& i
}% v" E6 U; \( f9 s' g" M

& D% T9 a3 z5 L6 @Gameloop();
% x# [! N8 w; P/ G5 m4 f" |/ }9 j[/mw_shl_code]
6 J$ t6 S5 B" z, U/ T  ]4 K; a3 O* [$ x, q. d; s2 V
- K4 H1 K# K5 m# A$ K6 j- L: d
引入争取的html,$ }5 d$ ^8 f, ]. O8 k

0 {) V3 Z. \- t, q# {- B  Q[mw_shl_code=html,true]<!DOCTYPE html>! z( Q* ~1 g% N% O" S* k8 I, V' n
<html>5 R+ o. c" u+ N& S1 {7 Y/ \; [

1 g! O9 H0 d8 c8 l8 K<head>
7 p, K( f: v+ f* m3 o3 @" K( L6 K    <title>hello ThreeJS</title>. F7 H: @$ o7 K- l) ^0 c* A4 p
    <style>
7 S# e- @7 I' ?* h$ A        body {
# F. m/ l( G- k) o            margin: 0;. c; ^, |; ]5 x) d* P7 L, O. ~5 y
        }
; P7 d; P' T3 N, i
' j- Q2 ~3 \, Z& T( a4 \/ M        canvas {
: A; y/ a! n/ _9 m            width: 100%;
4 R, h1 F' a9 H0 b. L+ a            height: 100%;1 ~* P4 O" [6 \3 T+ n+ a
        }
$ B' G% `1 i+ U, _. a9 O6 v. _, ^$ S: K
        h1 {7 \8 w2 h" w* n* e4 I2 r& [6 I, I6 w
            color: aqua;5 h6 ]1 ]4 J( k& p
        }
7 L9 N, A" e5 }+ k1 `1 ~    </style>
* c7 U) M2 [5 K: w) ~% \</head>
& T0 R5 U- t  w' W1 A
1 x0 R8 S: Z% i, ?  L0 E* ?<body>
( S, W5 A; z% G0 M# g" L <script src="js/three.js"></script>
' U# [; s& H5 ^3 V# n    <script src="js/OrbitControls.js"></script>; _/ U; i, R5 a. C4 `8 |) i
    <script src="myjs.js"></script>% H: C5 f, I9 L
  4 n: i. x2 D" f/ ~8 C

5 {5 \/ f% i- O2 }
) u: f) l& _8 A7 [, ]4 Q, O' x; o9 F9 P* D8 S
</body># a0 O0 f( A1 ~) C0 z" @, K2 F4 [+ E% h
2 ^8 N8 Z9 E# Q2 @- n- ]' n" _
</html>[/mw_shl_code]5 C; M6 v2 I) g+ @9 O  i
3 y' j' y) U6 J/ z
效果点击这里:* |; ]+ o1 G& v# {9 t) [# u
2 N  }/ t; Y8 ]0 o" b2 Y9 }
http://plmhome.com/doteam/lesson1.html- {+ r- E3 h' s4 R
/ Y. K# M. c5 X9 X6 a) ^! U9 S
" P4 g+ z. `1 q, _% V; w/ b! s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了