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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
3 c8 f9 C( p" r
4 @2 u" `. H9 x  Y) y
废话不多说,官网自己百度下, threejs.org ,入门很简单。1 D7 p3 ?1 f: f3 v% c7 i6 x

- ?& b8 }/ {+ D* `# Q5 R4 |9 B创建的javascript脚本如下
' H: z$ j2 U# N- }& D! M) z# x: g* g# j
GIF.gif # X- c7 T: r9 [& k7 v$ D$ @( H
[mw_shl_code=javascript,true]: l( p3 l# v6 c& N  [- M
var scene = new THREE.Scene();( U8 f4 l- G2 ?3 @5 H
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);3 h! R+ C7 y  ?" _
var renderer = new THREE.WebGLRenderer();
+ B+ `5 S0 g# ^. d) \  q: ^2 m  urenderer.setSize(window.innerWidth, window.innerHeight);+ {7 a3 V1 V& O7 M4 d8 {; O
document.body.appendChild(renderer.domElement);
7 z: V; Z' r) |1 R$ T0 w% F' }/ {7 V% u: |
// Refresh Issue ( Y1 K8 |3 ]/ A! U7 ?- `
window.addEventListener('resize', function () {
6 [' P8 C& [# S5 x  B    var width = this.window.innerWidth;
0 u! K9 ~* D, y/ S+ v  I1 M6 _    var height = this.window.innerHeight;" ~/ N; R4 F! S) s
    render.setSize(width, height);+ H& R* j7 n6 g$ d$ S5 Y
    camera.aspect = width / height;
3 Z8 V1 `* }8 o: C" r    camera.updateProjectionMatrix();
+ P) z: b: _7 a& L* o- ^7 ?9 J/ @})2 P: u$ o0 z. }' ?

0 B# R, }$ _  P( p. [% c. H//orbit contorls
" R. A! P9 b2 D- n. G& x( s, Pcontrols = new THREE.OrbiTControls(camera,renderer.domElement);
! X3 ?0 V/ S; {0 t/ ~& W$ [/ X( i7 \3 w, e$ M
//create the shape5 ^9 R3 l5 s$ l; K
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);, J# y3 `. q  C5 J0 u
//create  a meterial
+ i; s$ r" Z4 i/ F* p4 G2 S! _, }var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });. V4 E5 s% D* c6 u
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];, ~* `8 P  K* I: q# |5 F: T
//var material = new THREE.MeshFaceMaterial(myMaterial);
) S( q/ V6 \3 W2 e2 A% N6 Y* y! I. l$ E3 E  e
var cube = new THREE.Mesh(geometry, material);
) f$ w% k* M2 i( Q" z# H; `scene.add(cube);
, |) @6 n  d3 Q$ B7 O" I8 Dcamera.position.z = 5;
9 c) V( Q% ^7 G! q+ i
& C# t9 v6 V9 }1 x
' j* D' [* X, t4 z/ }0 V/ Z( h5 G# J# s8 L- N! w% \% }) ~! i

, e( I+ R3 f8 t# e) ?% r# {1 B* R8 r
//rotate
) M8 D+ K3 n8 b- z) z7 @var update = function () {
' K4 @7 _3 e& v9 p* |% H    cube.rotation.x += .01;/ `  Z! K- \; L* `. W+ A
    cube.rotation.y += .02;0 _+ Z, j( F* ?1 j2 D
    cube.rotation.z += .02;6 W# I4 p8 f/ o/ Y8 t
}
" ~; a/ {( |/ E0 I
# e4 x9 Y9 V. l  L% @% Qvar render = function () {5 ?; L2 R4 y# [  G' h
    renderer.render(scene, camera);  k" h! O2 {: y/ x
}* ?+ i" A" ~/ L8 D) c) [7 J2 q

7 c" g  B1 T" N7 |- j
. ?6 R6 s8 x- |. r: A2 e& [+ P
( g% \; l6 Y9 B. C1 d5 Y9 Jvar Gameloop = function () {
0 s& p# H* K/ C# U; ^' E    requestAnimationFrame(Gameloop);* C! z: l2 U( f: T. o" F7 @
    update();
, H5 c1 Z" P# A$ r' r9 D5 s" T    render();, Q. u. a" n/ [- n9 G/ e
}- ~0 `3 u$ H3 U* ]$ C' D( ^

& r6 r. ?7 P  }% R; h9 EGameloop();, g- D6 m) f4 i1 `0 ~! S
[/mw_shl_code]8 ^: V# P- f0 e" E2 U

: I& b1 k' v; s$ x+ z: s
+ E0 s+ _- l3 C1 S- K- J- J引入争取的html,
) t/ C% S) Z  X1 T* }& M
$ t% Z5 S! ?$ u6 ~2 C1 \% g/ g  K[mw_shl_code=html,true]<!DOCTYPE html>+ E* V* W+ C) p7 f& @$ Y% v
<html>9 [8 p, Z0 g7 |, ?( x2 j  ]

/ l+ x) G( I0 o<head>  `# W% C+ t5 A' T9 S( |
    <title>hello ThreeJS</title>: m8 i! p/ T/ o9 ]
    <style>
- W: p/ `' f5 r1 W1 |2 U        body {
! N; O1 `9 A' |            margin: 0;
9 T3 k7 G; ?* R; x        }
7 p5 @' h. g/ h% B0 m/ }! }5 U2 C5 x
        canvas {
$ ^# N, }' \2 L3 i: W            width: 100%;$ ~# o" g( |  j* p0 c, h
            height: 100%;
3 o  H. ]' j1 H# k2 j1 ^        }
9 o+ j  G% f- a' G0 k- \+ L, O) K5 J
        h1 {
* t) y3 D" I& _8 x' z            color: aqua;  B) y, L* V; a3 T, l
        }
4 O6 z; ]. G0 n4 ?- ?    </style>
4 D- V* s- b1 y" E$ U8 E  z</head>
+ |1 k, H3 w8 }1 l# z( g5 I9 U2 {! t0 \& X: b+ C& P/ v1 ~
<body>2 q. }( |7 d, Z2 K) t( Q
<script src="js/three.js"></script>
+ L* S" R- y& e( n' t    <script src="js/OrbitControls.js"></script>
( [- Y1 ~5 |$ K    <script src="myjs.js"></script>7 Y( V6 o* f2 k! P4 z" g- s
  6 K: q- y1 |7 z/ O% c. G) x
9 b- x; g- |2 p# `7 Q1 c/ d
" P3 {* n. R/ G# z- ?
3 O' W1 r  m5 Z- }& U: h
</body>
+ G: d  C3 k2 ~9 D& ]. [: N( }% X
+ e: B3 H5 ]2 d. K$ F9 \</html>[/mw_shl_code]
9 ~8 i7 @+ |9 X4 O. e# Y$ |4 V6 C" N9 C$ v( J0 S; m
效果点击这里:9 [: i2 T7 R. i4 s
) p" h9 a; O$ j* J  L
http://plmhome.com/doteam/lesson1.html
  n' x. l8 z7 X( e. K0 p: G& A$ u0 Z8 m

  i% t% P0 c9 `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了