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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x
; N$ D- S6 [* O7 d, Y9 Y8 p6 K

5 V+ L: e' u& J" S0 `' z废话不多说,官网自己百度下, threejs.org ,入门很简单。. n5 s$ f5 k) Y# Z- o4 `
3 ^% y8 d4 t( h) D/ v
创建的javascript脚本如下" o6 I8 b- _1 u2 C& ^

" ~# c, o; n5 d* Z) o GIF.gif
2 o% {( {' O8 b* }: w[mw_shl_code=javascript,true]" ?+ C& i' U! K7 ]
var scene = new THREE.Scene();9 F, |: m  q' L! Q6 _
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);+ O( E' a2 s, l" K, L
var renderer = new THREE.WebGLRenderer();
; O6 ?8 j8 w$ C6 p. H# rrenderer.setSize(window.innerWidth, window.innerHeight);0 J, a6 a8 ?# U* L( a
document.body.appendChild(renderer.domElement);
3 r8 ?: W3 ?  |' c9 U, s$ F6 w* |* n8 w
// Refresh Issue 5 c" @  _2 T9 J! L. x% S# U8 d
window.addEventListener('resize', function () {
/ S& t! f6 [2 e    var width = this.window.innerWidth;
8 H7 p+ C4 ?, E  g0 Q5 Y7 e, ^    var height = this.window.innerHeight;
# v! Y+ s& z7 T9 j" p    render.setSize(width, height);  e  A/ Q2 `9 o! C, W
    camera.aspect = width / height;8 c6 {& a* a  {4 F# z  l
    camera.updateProjectionMatrix();0 X/ N* t* \+ g, Y+ W
})% n3 O& E& n3 w" |
, y& ]6 b8 Z: ~( A2 B' a
//orbit contorls  t1 I) m( N+ [
controls = new THREE.OrbiTControls(camera,renderer.domElement);. p" }8 T. {' s# H" c+ O
! R/ E3 f/ c7 k5 L0 E* H
//create the shape
; L2 M/ _% W( |) J# C  N; ^1 }1 }var geometry = new THREE.TorusGeometry(2, 1, 16, 100);
0 H0 g& O+ Z" ?" l9 A3 |9 p//create  a meterial' k( Q1 I  ~! G  y
var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });, L2 V7 f8 W% i. N
//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];
6 D' F  e  [* I2 w; a//var material = new THREE.MeshFaceMaterial(myMaterial);+ W/ `2 T# p. Y
3 a8 N" s: U% Q+ Z4 _$ s
var cube = new THREE.Mesh(geometry, material);
- N6 Z! t- b) gscene.add(cube);' I  a# c) H# e; u! ^# e' Y; s3 h
camera.position.z = 5;! p3 Z1 F/ A) [8 s
. f% P8 [/ t6 i* n  y

9 L; J3 R9 J& _! r* ~0 z7 L
0 A2 ]- S5 P$ t
6 A. x: s3 T( Q+ t) E, [# X6 ]; m1 [0 e) A' j
//rotate
4 Q, z  p+ v, a% Z9 dvar update = function () {' l0 o0 ~: [* @% D+ U2 M
    cube.rotation.x += .01;
: E% V9 @# J3 e    cube.rotation.y += .02;
. ]  D1 c* p8 o1 z    cube.rotation.z += .02;
' J+ q+ [* _, v8 u8 [. z}
) q( D, b9 I- w. q# a$ d; X
0 N! S5 o# W! Y3 h' V9 Bvar render = function () {: q8 _( F! x4 a1 z9 L: J( l
    renderer.render(scene, camera);
* s/ v% W# k/ T8 {& b}
9 [  Y3 e) m. S# J3 X
$ o, d/ j0 Y% ^7 c
# A) W8 S4 `( e
* ?+ C+ z; A# \! y  Nvar Gameloop = function () {
* h* i& E# N5 R/ s$ a    requestAnimationFrame(Gameloop);( Z) |5 p* T( q8 b. L6 V; Q) T( b8 i
    update();3 T5 T8 W: t+ Z
    render();# A# C7 e5 p7 s4 K; n7 x% G
}
" K. I0 e" w) Z
9 D7 i! W4 j. y- qGameloop();+ v5 T( V: q% C8 e. W+ L
[/mw_shl_code]
5 j4 X. B# t, _4 o+ d
0 I- y0 s6 k+ o6 {) a  f) f0 {, R6 Z* ?; }+ N
引入争取的html,
) u2 e' b: T; N9 e/ P0 Y/ [
0 T8 z$ s& E. G! `4 d7 N[mw_shl_code=html,true]<!DOCTYPE html>
- L8 ^6 N4 a8 Z% \6 `  f<html>5 `& ~2 ~% ^& Z2 z7 ^2 |' g
# L  P, Q7 U- E0 l0 ^' f7 Z
<head>% _0 b0 Y$ j' A- o
    <title>hello ThreeJS</title>
% `/ i! a/ b* n    <style>2 A6 R& k' P; y4 s, c9 J6 F
        body {' j7 }! t. N( J! N2 m/ [# p
            margin: 0;
2 u% ~# |. o% P1 u. G        }
- O8 V; o/ M! C7 b* V4 a8 }4 l" N/ A* m) o* R  P! p' \# v) ]
        canvas {
0 H0 Y2 l. k: x            width: 100%;
# p* \; z2 |! ~& B7 N: B3 d1 B7 d0 Q            height: 100%;
6 r" U3 [* }8 l6 u1 U! e        }4 k+ Z5 x4 H3 H. G3 U5 v/ _
% w1 H+ e. t7 s- {
        h1 {3 n5 N/ k; y' T/ s0 \
            color: aqua;
+ p5 ^0 Y5 Z; J: m& B  x        }* U6 P" b+ ~& X$ j& i) }- \
    </style>
+ ]& }% {/ P! M/ j3 [; r. Q4 J</head>
7 H$ W0 D+ `' I4 Y! e' [5 I( O9 T$ M3 D, M
<body>4 c& k4 p& C1 M% U
<script src="js/three.js"></script>
; h3 l# d7 E' S    <script src="js/OrbitControls.js"></script>% J* v( Z6 n$ Z* P4 ~# m
    <script src="myjs.js"></script>6 }( |; I9 w/ x+ Y; V
  
4 E. _6 N4 M" M; a* g
2 g* Q% F, T7 f0 A& r$ Z; U# J5 h+ ?8 o3 j
7 }1 m* [8 V! H' e3 j! R
</body>6 P$ y. O$ Q, \4 n$ H1 z
. P# E+ V7 d3 L
</html>[/mw_shl_code]
+ ^/ h+ Q  V6 K
) G6 D! y7 c* v( o, [效果点击这里:
$ W( m+ Y! j2 w" _; k2 `! u
' k4 C5 N, k4 y5 O; {$ j! phttp://plmhome.com/doteam/lesson1.html
5 O1 L6 }$ J# N: z
' G4 P* \3 p9 X8 ?& P# Q0 c
" G$ W/ d' D* Z8 B1 p* _( s4 g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了