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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
* [% W3 W! ^8 h$ R; Y$ p3 C
6 K2 R9 f1 s* n# r; c
废话不多说,官网自己百度下, threejs.org ,入门很简单。
0 [0 _8 R9 r% l7 Z1 o! i
  B! p% `* W7 g% a0 j* Q5 q创建的javascript脚本如下
6 f6 e# T/ w* n( z# P4 d" P% n8 |# c4 K
GIF.gif 0 j/ ?- o) H. P
[mw_shl_code=javascript,true]9 t: C2 |# c7 B7 s1 G
var scene = new THREE.Scene();2 u" u0 X- d' ]9 t' \
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);* M, B6 P! Y8 G% J' J
var renderer = new THREE.WebGLRenderer();
4 J5 m: O/ ]1 |! A& p8 [) rrenderer.setSize(window.innerWidth, window.innerHeight);
3 H4 A$ X, o) D. e& Q8 Q9 Cdocument.body.appendChild(renderer.domElement);/ V0 _; W# n. _% Z" \& v- R1 o
1 ]% h$ ^- C% l. v: U
// Refresh Issue
! @8 ?; y' x) Kwindow.addEventListener('resize', function () {! r5 p$ d5 y/ A
    var width = this.window.innerWidth;
+ W3 J5 X+ A8 a2 v6 S" L    var height = this.window.innerHeight;
  j" D- W9 W; i1 c    render.setSize(width, height);
6 U9 t& m6 J& a% @    camera.aspect = width / height;1 ], c5 I! Z- O1 k+ Y
    camera.updateProjectionMatrix();3 b9 i" L2 i- v$ w& Z7 G) h! I7 W
})
) ~4 v. y" ~. [" u: E6 t6 n3 t- B3 d7 ?4 g' B( _
//orbit contorls
" b( [0 Y' R2 k9 Z7 p7 jcontrols = new THREE.OrbiTControls(camera,renderer.domElement);: i- V$ @: r( L7 b& l7 k& w) ~, j# C
1 g& e4 S3 w' o. b) l; d! p
//create the shape0 w6 M. u# G# a' X7 L* k
var geometry = new THREE.TorusGeometry(2, 1, 16, 100);: T& ^& h* M/ H
//create  a meterial
, e4 `+ R1 S$ u/ h+ [0 mvar material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
/ p0 x$ X, M5 }6 X0 S//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];' b( ]8 _4 ~7 f7 F# p2 K
//var material = new THREE.MeshFaceMaterial(myMaterial);, r0 ]! o! M+ x4 o

% m1 ?+ h+ j( W4 w: q* G0 xvar cube = new THREE.Mesh(geometry, material);
* n/ T, d/ \! b$ Gscene.add(cube);
3 O( P5 W1 B: T4 f. f' Dcamera.position.z = 5;
6 K1 ^3 P  D/ S2 g
( E8 K0 Q3 t! s- Q( ~! J3 g' S9 K6 N% R" w: q
" u! ?5 x2 U% x' y% Z; M% U
7 C9 W" E2 k2 B& P0 O
9 \5 N/ o3 s& a( E7 Z( F2 N2 K$ y) ?
//rotate ) f; [$ U' ^" d5 D, t
var update = function () {
, j/ ^8 K% _$ ~/ r" _, O    cube.rotation.x += .01;
( X% v. E/ r1 J2 U1 ]3 r    cube.rotation.y += .02;" n0 D7 B, f/ |& N! ]$ k8 z
    cube.rotation.z += .02;6 _- a1 q; j' E+ P* y, O
}
# p& A1 L- J4 L* j. t, {4 ^
2 ~" H& w  `1 g5 C0 Z8 avar render = function () {8 Z% y# V' d/ Z+ }
    renderer.render(scene, camera);: f6 g& h9 e6 z4 G
}
; q8 B$ n1 ]) j& Y+ {8 i. Q7 {
+ B2 K1 X7 h' R6 p: F" ~6 _  Z+ P* q' d" m: R. @

! f5 ?$ |8 _+ @. ^0 C0 Pvar Gameloop = function () {
% y; o& |3 l1 W. A# s    requestAnimationFrame(Gameloop);
& n* @0 v) D3 Y& k    update();- B* q0 D$ U" |
    render();
) g/ e- J  I' @: H5 y! i" s}9 K1 T$ c: A, N: P) u6 L

6 `* A" ^# `1 |; v( DGameloop();
4 n. Z) I/ S5 \/ I/ r[/mw_shl_code]/ j  O, x  l6 k3 h6 p
, I: I3 [+ }3 }0 m' r7 x

$ p3 x+ G# M8 i! q1 D6 ?引入争取的html,
3 F6 Z& P# n" L% b' @3 M3 Z
/ Z5 n2 P6 C* G8 o! D[mw_shl_code=html,true]<!DOCTYPE html>
8 P2 P/ y8 g( q+ H. d! `<html>
- k- F/ t4 M, ^) h5 F7 ]' B' v+ a4 M3 z/ w* o2 l: }
<head>
" g& E1 m* E+ |3 ^3 X    <title>hello ThreeJS</title>7 F6 w) B1 t( l9 A" I5 K& @
    <style>
4 ?0 A$ ?8 L: I        body {
# G; H/ Y& U, v/ x            margin: 0;
! l6 `! a& ^5 _( a0 @; o        }3 H6 _9 O  B& Z4 {, I5 |- K' D
1 V7 q' Z# [9 e2 i& y3 i6 G
        canvas {. e* K6 D3 e. _
            width: 100%;
/ z  S8 J! o, N            height: 100%;" _1 `$ R. Y  D2 R
        }
  B: A% e- h1 `6 |  M2 z: g! b7 Z- Z# E9 i, S  a" v
        h1 {: e9 q4 N0 S. M7 Z0 k! f
            color: aqua;0 s  R# W# K$ b
        }
- Z8 r" a, }# t3 y    </style>5 u# ?' y& J5 H& D& t! f0 [
</head>6 p- \6 ~7 p' q; Q& Y1 M

5 _; h5 C1 }' O+ u- t: h& z, I; V0 V- h<body>7 s8 G2 R7 q2 D$ z3 q3 L1 D
<script src="js/three.js"></script>! n9 H* u3 r. a3 F8 h/ V' S
    <script src="js/OrbitControls.js"></script>+ \7 D7 F: y# s/ U3 v; K  A8 X
    <script src="myjs.js"></script>* R6 l/ h. A7 ]2 V  y9 c; T$ c
  ) |# E4 M* G) B/ h6 X7 B
. }2 l) ~: m( ], Y; |

+ G' z( Q% m( ~0 R
/ J! T# D& G. H7 x# M  R# c! x1 J</body>
: o) ?+ D7 ?6 v$ Q$ k1 D0 [
* T8 }8 [( i0 p! m  V, ?</html>[/mw_shl_code]; n- e  w& l4 Q+ p9 b4 {! \
' `: X3 B6 f( `
效果点击这里:* H+ k5 n8 g+ }/ m& X" h% R
; S% s4 t( w) \
http://plmhome.com/doteam/lesson1.html7 N( p: t% I  A7 g

: c/ j8 A6 O6 \1 i1 i0 m+ x. `2 y0 V! A0 M2 a4 K
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了