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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
6 j# m2 R' D2 g$ B. W$ t9 E
/ n) p( I. t- g" {* x% w6 G
废话不多说,官网自己百度下, threejs.org ,入门很简单。; Y* m; Y9 P  B. b' B1 _3 k

; t8 G. w7 y! U5 t+ c6 v5 v创建的javascript脚本如下0 n' `# S) Z& t4 E  Y  ^

$ f/ t' J1 z  Z% Z) Q GIF.gif ' [: @% H2 ?* f" f4 j2 k+ {
[mw_shl_code=javascript,true]
% o  r4 q5 b- h& ?( p8 p. @, u+ {var scene = new THREE.Scene();& `9 R7 {6 p) s
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);' a8 y5 \  a) m0 N2 M3 U9 p
var renderer = new THREE.WebGLRenderer();
2 ~1 L+ ~1 C4 R$ h1 Wrenderer.setSize(window.innerWidth, window.innerHeight);
5 J6 {3 d  p0 q' j# ^+ R" vdocument.body.appendChild(renderer.domElement);
" S0 v. ~* `$ f$ F
9 L/ H+ E; C% S: w// Refresh Issue , G& r  |* i; [5 d$ L, ~, x
window.addEventListener('resize', function () {
3 B- L2 g: b* z% v" E    var width = this.window.innerWidth;
+ _2 G4 k" O9 I( H    var height = this.window.innerHeight;
: S! q/ E0 `  H5 r8 [$ J7 M    render.setSize(width, height);: f2 e. s6 A1 o4 p. v' {
    camera.aspect = width / height;
3 B, Y* Y- D* i. P2 x) ]    camera.updateProjectionMatrix();
8 B6 c6 s8 B) H2 [$ x})5 p: P/ ^/ m2 C3 I5 R; s4 k

5 d5 @  y, [& ?4 K% G$ L. Q//orbit contorls% t. T- ], L& Z, W" _( }
controls = new THREE.OrbiTControls(camera,renderer.domElement);4 m! ^4 {4 v' j# G. p3 L( @, Y/ n) W

4 M) o7 g- }8 q  l- O! v% v' o7 ~8 B//create the shape, D  T, b8 f5 m& @& h0 F$ P# U
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);. ~4 ]4 u2 \/ ?3 p1 Q2 _: u* S
//create  a meterial
7 o' i/ U! [: ]9 Z" X, uvar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });6 C. o5 Z3 p3 M4 i+ Z4 x
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
" n$ k, A0 K( F3 M//var material = new THREE.MeshFaceMaterial(myMaterial);1 {$ Y" c7 F* ^  @- e, Q9 B

, v4 y  k6 k, xvar cube = new THREE.Mesh(geometry, material);, g/ R9 j( W# G. d% q# S4 ?& m
scene.add(cube);
. Y/ ^1 ^' \; H1 m% {% rcamera.position.z = 5;& w. ~$ S" h+ v5 m. l
( z# Q& x, \) g6 K4 y

" o' q# ~" {& H* K: S% i# T$ P$ u* q/ I+ ?$ K9 f, c$ C) k, m1 V4 W& t

! K6 X2 y5 y" Y* [5 H; _  \1 r! _) R
//rotate # J$ T$ t# w+ O! K; L- d" j$ m+ L
var update = function () {1 |- _0 R/ k+ Y$ ~
    cube.rotation.x += .01;
3 S* X1 w; r; m& ]; S' J# C    cube.rotation.y += .02;$ Y& ]+ r4 z5 t( X
    cube.rotation.z += .02;5 }# _& P! O* g
}
+ T8 |$ f! B% M) y2 U  H. N& o3 ^" t% Y& p5 Z
var render = function () {, @! s) n+ `, H+ y
    renderer.render(scene, camera);
7 D; @5 H# l- v$ Y9 {5 G+ S- p}( i" L4 X" F9 E- N$ h
8 z  c' \, j. e) q- ~

* f' P, N( A! k' m( L- k
4 r$ D/ `7 S) E+ {var Gameloop = function () {, v, `( Y$ O- o/ p8 Q1 u* |+ W' @
    requestAnimationFrame(Gameloop);& v7 p7 Q9 v4 u% [$ T/ ~5 n
    update();% b: q" [7 `3 u9 p; Y
    render();
" g( P" x$ T) H# h) e' _( f}
" H+ @, \2 V/ p) w4 Z
* p, u) p: _2 o' v& R% fGameloop();
  ~& q8 N0 a# D' ^+ q[/mw_shl_code]
3 S; }4 ?0 t! i
+ N; p& A( S" w) u
6 n/ r& ?( k( D- \+ q) z引入争取的html,4 d; N) {- W4 Z$ v+ \* c

; ]' x( u) ^1 L[mw_shl_code=html,true]<!DOCTYPE html>
; a. Z& `% z0 m& s' z5 `: c* c$ y<html>3 \& ^3 X0 K: X! v$ }/ h

( Q* {) ^9 Q  O<head>
9 i$ u7 l- }( @$ W' Y5 @9 _    <title>hello ThreeJS</title>
. z$ B' b% `8 E: K. l( u' B& J    <style>
$ W2 \- e: o2 A: u/ u, |        body {
- Z, F! N& l) q3 k            margin: 0;
1 N+ a0 n: F. w3 W5 K4 l2 ^* ^$ Q        }0 ?; `% ^1 Y, i, l- {0 X+ ^

) \/ P" Y; P+ F% z        canvas {* D) Z# ]0 e, V2 `+ Q. p0 _
            width: 100%;4 G2 h6 s! h4 D
            height: 100%;
* A3 {' ]$ E! _# X" l% |4 O1 O        }" `- U( D0 ?9 e: U' x

6 l, k, U9 e- h: C) _/ R5 W# r. r. K; a        h1 {4 i# K$ |" @$ S/ W4 ^
            color: aqua;1 R: I& B0 r- T
        }7 S/ }: D' V# w5 @
    </style>
$ W1 Q3 w% T" h: J& l5 P9 x: D</head>
. U' Q: I, t! {# e1 D6 f5 W% g4 M  @" t. W) I
<body>
0 [5 Y) v( U+ a/ _% K4 `7 s <script src="js/three.js"></script>
2 N' Q* Y9 X5 \5 |! D# P* V" `    <script src="js/OrbitControls.js"></script>
8 ~- l! [0 ~$ K3 j1 G: c    <script src="myjs.js"></script>
3 F- B" g7 n! L3 G  8 k# K9 `0 v/ a! Q2 |" A9 {% i
4 y& H7 R0 Y3 h9 T9 ^& C6 i
) X: U# \: G7 g# g2 y4 r7 F

% Y0 R6 i! |) d3 e2 w8 }( l</body>
- x1 }. B. [' b
' j) l$ |0 v. R+ c* p: e0 v6 X3 W# R, O</html>[/mw_shl_code]
+ y" t; |0 e- f* [5 l) ^- v+ C* |# W- E1 W$ c+ Q6 o% w5 o
效果点击这里:
0 O: [3 R+ N; z* |! b3 q  b. x9 v8 k. z3 u& h. w$ P& i) Z% k# v
http://plmhome.com/doteam/lesson1.html
/ h7 [8 V: l$ V' }2 e7 k8 D
/ `# H( p5 B7 @3 t9 u2 h& L* T6 [' w6 c3 Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了