PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x

8 X) M$ @2 j" ?# r0 c; h- {4 |
; C- f3 y+ P) O1 ~1 c" I7 f2 I废话不多说,官网自己百度下, threejs.org ,入门很简单。
# P* d( y. X. X9 q9 \$ T
7 p; \5 u) h/ t: G' H, O% V创建的javascript脚本如下
' _) ?2 f% g, ~( B8 Q% b9 e, M" ?
9 T7 X' |3 @/ v: x) H GIF.gif 2 |" q+ O& y  q# R* f8 z
[mw_shl_code=javascript,true]
4 j/ ]7 v; }" ~$ dvar scene = new THREE.Scene();
( z  {+ w; D& |# |var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
) ~9 f7 M2 C8 I' i# i$ }# n4 b* V( Dvar renderer = new THREE.WebGLRenderer();: b' t% w, l3 r* x
renderer.setSize(window.innerWidth, window.innerHeight);
( ~( b- k  T: t+ [2 y1 F  gdocument.body.appendChild(renderer.domElement);1 z: F6 m" o0 ~6 k

% K$ g7 N5 {7 J5 R// Refresh Issue , \! z$ h: @" h% {6 U! m" z
window.addEventListener('resize', function () {
. S* b, I* }; ?    var width = this.window.innerWidth;
# C2 n9 W7 R3 o1 i    var height = this.window.innerHeight;
2 K3 e# ?/ s$ y" r& K: ?4 V' U9 K    render.setSize(width, height);
$ g( N. w. ~; s! L2 ^& ^    camera.aspect = width / height;$ Y8 D& H, p) \3 ?" _: Y
    camera.updateProjectionMatrix();
* f4 F8 b9 b+ p8 n. Y9 z# X& h})& Z3 r# F6 K* [
, s" ]% B& U" ~' b0 G# h
//orbit contorls
- r7 m# d  T% Zcontrols = new THREE.OrbiTControls(camera,renderer.domElement);) p! X0 S  Y( L7 s1 B2 j) o9 m

/ L$ m/ o0 ]0 Z4 Y. V//create the shape5 }. I, A# J4 X. T5 R: ^9 n& @3 Y
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);# B" @8 k: V! a: B
//create  a meterial6 L5 V' z8 d0 K1 i: _1 r/ m$ P1 {
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });6 A- o6 m1 v8 Y+ e% Q" R( a0 p
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
7 Y9 I/ V- U  Z5 J//var material = new THREE.MeshFaceMaterial(myMaterial);
6 \/ R+ T6 @$ |. y% Z+ l! i( v8 l: w* g* v( F$ R  W9 @
var cube = new THREE.Mesh(geometry, material);
2 x6 h0 R/ ~5 s% p: fscene.add(cube);& @& G! I/ }8 P. M9 I" k7 P. D: l' z
camera.position.z = 5;0 }7 O0 R  D4 t
7 N, \- \: o% j7 e& H9 e$ t. K* D

4 p! W: x1 d" E: o+ ]! u4 X
$ p0 V  i1 B. \$ s* A4 Y+ W- u8 g8 ~7 R/ I$ I

# i0 f# k, i& \: v//rotate
+ h' K; O0 U2 dvar update = function () {
( Q) W/ G* w: K    cube.rotation.x += .01;; H& |8 |6 E' t
    cube.rotation.y += .02;4 N9 Z* u, F# m- \( x( w7 y
    cube.rotation.z += .02;
( n  f* F7 P% B; L7 Z}5 E2 [! D7 {& X' J0 a

( z. d% b2 p+ T; I, ]8 evar render = function () {% A4 ~3 M4 O2 f- O, t& b6 _3 Q4 e. d
    renderer.render(scene, camera);3 w. d+ ^" g4 L: I' r1 z1 b
}' g% o' \- Q; q7 |1 H3 H

3 B  A% @  ~9 u3 q" g3 I, d/ j3 [) W6 m5 F: `3 g# M' J# U
7 V% i6 j5 x/ |2 F% z
var Gameloop = function () {
* `$ u2 M/ H4 q4 `* ?    requestAnimationFrame(Gameloop);
8 y: X1 ~6 l, ]4 a    update();
; d3 v: m6 b0 m& o    render();
: ]2 X. ~- V) x' J}% k8 F. H* d. K$ G% R/ ^- N( U
" g5 j. t3 b) ?) f" [) t
Gameloop();1 n& B1 F1 m: T" k/ D! R
[/mw_shl_code]
- w, q1 h% x+ h. s) C/ `( ~. B3 k. I9 _, v* n8 _5 w9 e  g
8 J; l& L, v. j$ j& C' b# t" U
引入争取的html,  F% w) O" V# }3 h, C5 u+ I, }  Q
7 e5 H! @8 W( W" S' z$ D
[mw_shl_code=html,true]<!DOCTYPE html>
) E3 ^# F+ \' k<html>. R4 q/ m+ s- u5 c& q

& H& T* S) L" B<head>
( U& u  a0 p3 n1 ~# U- c3 K    <title>hello ThreeJS</title>
! c' U( R6 V, r7 m1 I2 |% T    <style>
% R& U. V% Y& |$ u5 l        body {
4 ?, G8 K' d! C  `5 y: U1 _            margin: 0;" T" s3 L: V: {" U9 L- U
        }  f! Z- L9 n1 q$ H3 a5 Q) n
# v  O1 e6 c8 y6 @7 `
        canvas {  |7 S( l5 Q) T8 W" @9 f4 y
            width: 100%;5 W6 u- Y) R2 g' b5 }/ x' Q2 u3 M
            height: 100%;" D- C1 |' V. M7 |3 M
        }8 D1 f( ^% L# X! k) k7 V
; e! i, k/ L; ^+ d; P
        h1 {
  O) \" x7 V+ B& ?            color: aqua;
4 r! {8 X  `8 D        }
/ ]) J! k  h" U0 g6 [    </style>$ @9 K) b) l1 a; c+ h
</head>  k8 }% z% `0 E1 D
! D! J$ J3 }' E
<body>
6 S( u6 L3 z5 M <script src="js/three.js"></script># H# h# U, o  O
    <script src="js/OrbitControls.js"></script>
5 j! w4 B' o, u; u5 o    <script src="myjs.js"></script>
. e# X- u: @- Z  
4 F8 F  _4 A7 t( h/ h, ~2 r$ O3 B4 ~1 H1 T3 Q, Q
& g0 s) H0 O1 S

. C) r; F8 {0 H- \</body>" ~8 h9 u/ Q/ q3 P2 N
4 F* \8 n* c+ s) S6 s
</html>[/mw_shl_code]
9 H7 ]; z* [3 U" E" s$ _  _; R2 C8 i* d8 @) K' P6 N
效果点击这里:; t' u5 `/ C) \+ ~

: a& X0 Z' l7 v2 Hhttp://plmhome.com/doteam/lesson1.html
/ A# S0 e- K6 R
& H. o6 f0 c9 \8 v3 F
( `; y/ j5 h' p0 i* D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了