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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
; m4 ~: ~( ?( [+ n  f9 }" H; i

+ _# a) E# {5 U$ {: ^) F& R5 R" U废话不多说,官网自己百度下, threejs.org ,入门很简单。
( C, Z8 U  v3 E9 n- ^9 T: A
4 ]! g* p9 F' \7 ?5 y1 S" D. q创建的javascript脚本如下3 ?, _- C$ C1 S, a4 D, `2 ^

& U1 R, e3 |; ~( d& Z; |7 s GIF.gif
# x* z' @2 \2 u% j8 x& r7 j6 u[mw_shl_code=javascript,true]
: x! e' Z* B! }* ~- O9 y9 Fvar scene = new THREE.Scene();* v$ M. Q+ I7 I4 P+ v
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);6 q$ z# O" T  q; E) t( W3 k
var renderer = new THREE.WebGLRenderer();( C* o6 x* [# O
renderer.setSize(window.innerWidth, window.innerHeight);- Q" R1 i0 z$ S2 Q: E# @/ k) @
document.body.appendChild(renderer.domElement);9 ^5 R6 [9 e% W  q7 a

" `# m- F5 B4 Z2 K0 b% f// Refresh Issue ' f+ B- P$ J/ @( e1 p4 K8 s
window.addEventListener('resize', function () {% K' {7 J# n  t5 v$ i1 s
    var width = this.window.innerWidth;8 C$ w$ g" K' X* U
    var height = this.window.innerHeight;
" u2 R3 L( i1 T    render.setSize(width, height);7 }( b( M0 o7 g
    camera.aspect = width / height;! T( D) H3 \7 E' v; Y3 x/ ?
    camera.updateProjectionMatrix();
  b( e! {5 D3 b; d& Z4 C4 u})/ T) D- g% F0 b9 ^& ?

$ N' }$ S3 R( P% }! H. l& b+ l//orbit contorls6 D: D  v2 Z& Y
controls = new THREE.OrbiTControls(camera,renderer.domElement);
- x% }7 _) _. P1 ?! F5 j, j1 Z& O7 Y/ w2 [5 V
//create the shape& S( j0 H4 u8 J6 j3 Q, q: W" h* U
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);; v" f! d! `" P; }) G
//create  a meterial
$ ]; z: B$ S& g" X( K& r1 U- zvar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
. c; z3 c' r, Z9 E//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];, Q/ X% S' `  Q. e% b& N
//var material = new THREE.MeshFaceMaterial(myMaterial);
/ G9 y5 M2 \8 p  H/ d9 g' m8 Y7 q) ^+ O+ q; e) W
var cube = new THREE.Mesh(geometry, material);, ^, F' Z# i0 y* J) A( S! W! |
scene.add(cube);; a: ^- {5 r# |2 P* X4 l
camera.position.z = 5;
. N  h2 B7 e4 x6 [$ O* I: N) |% f3 c& w' a
1 }+ N! M+ ~: q: @
" ]0 ?4 ?: v# {( G2 \) T$ w/ g' }- i

1 g* A4 w5 Q: P& `6 N
' ?0 L* L9 K. ~4 a9 N//rotate ' ?. a1 ^" ^! i8 e
var update = function () {: D/ J; ~4 X7 l1 J8 N4 s! ~
    cube.rotation.x += .01;
7 E" R" S$ z; q/ X    cube.rotation.y += .02;3 A7 Y0 E2 L3 ^0 {1 Y5 y& g5 X
    cube.rotation.z += .02;
6 [' R, V8 ]( `" U. P9 T}0 j# y; |  y( z# l

7 W  V" e& @& qvar render = function () {
6 j& ?5 f. ^1 s+ m& R0 [$ s  Z    renderer.render(scene, camera);+ v4 g: Y5 z$ k: S- e+ [
}
# V- u# ^6 u) _5 d5 q
! g" S3 W0 l& `) X, Z" m. w3 R: i$ w  w% G+ J
. h; n: y, Q3 C6 ^
var Gameloop = function () {& B' `9 K4 d5 x8 E' {* ^9 w
    requestAnimationFrame(Gameloop);
; b, E3 `0 {6 @    update();6 ]/ q0 c# h- P
    render();
5 G' o. o7 Q- O. O" A. Y}+ V" J. d, B: l: K3 K* E7 K
: i1 [# l% G2 U
Gameloop();0 O7 o8 N' r+ K# I5 r
[/mw_shl_code]
, T. S; ]8 {' _! ]: X- S/ D1 ~* P7 K* O
- {, D9 `% r& n' y" A" y* E
引入争取的html,0 w0 Z9 A2 E4 F7 x; P# F' U

7 V& N, ~/ V& Y: v1 z+ n; R/ B[mw_shl_code=html,true]<!DOCTYPE html>
3 u* R9 {. |, H& E3 ?<html>
3 {7 O3 [, V% o# D2 ~+ B# r, B! q. K0 J
<head>
5 B! z7 s0 Z7 r  S7 v4 X    <title>hello ThreeJS</title>
5 X0 w' k  H. R" @5 T4 Y  E; U    <style>
2 f! O5 Y% u8 X3 x6 V" ]$ H- G        body {, n# b, c" o6 a$ M: t/ G5 r* |2 J: ]
            margin: 0;1 z, A+ v! B& N: y; G8 }
        }) P/ B" h& C1 r

) ]. j4 p  X3 m; I2 m        canvas {
: c% m- O8 a2 B' P+ X            width: 100%;
; e0 z8 n! ]4 r5 p            height: 100%;
0 @5 A& m6 e5 O+ N& L0 L        }
' p$ {4 `+ `2 h7 y7 J4 m1 c
/ ?' q1 i, t3 z( R# _        h1 {
5 T- k0 Y% Z( H, E$ d            color: aqua;5 o8 w* G. }2 N& l) d0 x
        }/ L8 M: Q6 N  Y* }0 f1 ^
    </style>
# P6 w/ ~( ^" N8 P5 Q  Q</head>+ O7 C/ F" |3 j+ k
( l2 _$ x: w9 u. t. i
<body>
- w) D2 R" ?( d; F" { <script src="js/three.js"></script>0 |4 O0 b8 A" w
    <script src="js/OrbitControls.js"></script>
9 n- E& ]$ i) P- \1 C    <script src="myjs.js"></script>, E" L6 T  y* o
  
0 b- k: @  }4 ^  y: t" ^/ d# z. Z
0 }4 j: }1 d: ]$ k8 a# `" S/ j- s5 j
0 d( b! K9 x3 ^
</body>8 [( e  A# E* q, K* W" K# B

. v7 R5 N! h6 Q% {5 X1 T</html>[/mw_shl_code]9 a8 f- K0 Z7 u+ m, b
* T' r0 x, ?9 H
效果点击这里:
% v$ W' c- }/ d7 Z$ Q$ f/ k
" a3 c4 r& O- C+ I& xhttp://plmhome.com/doteam/lesson1.html
3 k. _, F- T: d/ k1 F" a* E5 j' ~2 T0 k

1 Y6 Q+ t2 X& r# C
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了