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

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

[复制链接]

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

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

admin 楼主

2019-9-1 18:45:09

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

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

x

! p/ Q: S* T+ F; m$ `9 x$ z
9 T% ?2 y) O( K2 z废话不多说,官网自己百度下, threejs.org ,入门很简单。
7 }7 n/ x( ?6 d- ^7 d9 N2 z
/ ?  Z: M3 ~( ]; V创建的javascript脚本如下
( J$ w  y$ |& Y1 i" o1 o# I3 f) X/ l! k' e* ~% i/ S
GIF.gif / H2 A' i4 a( J3 L1 |) M# q
[mw_shl_code=javascript,true]
2 t) X5 y+ p- L. bvar scene = new THREE.Scene();
( Z  j, s: @; [$ h: u* `var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);9 p( T* ~; h) m9 l+ K: Y
var renderer = new THREE.WebGLRenderer();1 u% x, d1 J. a* `& w. b* m! a
renderer.setSize(window.innerWidth, window.innerHeight);
9 \( V$ w" Q! l. cdocument.body.appendChild(renderer.domElement);" ~8 J- o& C7 z, F+ b2 c

/ t$ P, Y6 G$ R8 o) ?' T// Refresh Issue
2 m+ h5 D7 i: {5 ]$ U* D+ [& Wwindow.addEventListener('resize', function () {. m) |/ ]( |7 s' C8 _
    var width = this.window.innerWidth;
8 l: ^1 g+ J/ W3 y    var height = this.window.innerHeight;
. h. N8 M* B& s: T* n+ X% f    render.setSize(width, height);
+ w/ E5 ^6 w5 W# x    camera.aspect = width / height;2 ^$ C( T! a8 Y; G- p& Z
    camera.updateProjectionMatrix();
; S; K$ r+ C" S. n7 G) A9 ~})
+ N9 O( J  a3 C( R8 U$ @  Q1 U& d$ w: D% p* j
//orbit contorls0 E# A- p, I5 {/ _
controls = new THREE.OrbiTControls(camera,renderer.domElement);+ y) |& [1 f9 C+ v  }8 U+ u

  j9 ^( O/ z: g" o//create the shape
9 F* V) m( v8 J$ E, W: X8 Gvar geometry = new THREE.TorusGeometry(2, 1, 16, 100);; Z  m+ m& g/ h
//create  a meterial
3 b) {& ~. ^; J5 A7 Q7 a, S# Y$ K% ]var material = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: true, });
' Q# \6 Y4 D  J0 |//var myMaterial = [new THREE.MeshBasicMaterial({map:new THREE.TextureLoader().load('image/plmhome.png'),side:THREE.DoubleSide}),];2 m9 Q' l. t) r8 f9 T% C7 D
//var material = new THREE.MeshFaceMaterial(myMaterial);7 X* N0 e8 `' P% F

$ k; m) T6 d4 R6 N% ^5 pvar cube = new THREE.Mesh(geometry, material);
3 y* w$ O% ]9 i4 v/ v. mscene.add(cube);
/ j6 K7 i* v7 G% a$ _0 qcamera.position.z = 5;
" a# ?2 f8 }# n) ?/ z, U" q0 l  {0 \7 C. {: [
2 u  F% O" h- E3 J/ R
1 s2 b7 B5 h3 ^& U

( ~' v# r0 n3 ?! v' _! @$ P. e
/ N. ~( C- F$ @1 H, ?//rotate
. R6 g+ y; o- z: B2 i/ M7 T& Fvar update = function () {
+ T" U4 c, i- ]$ V, a$ z    cube.rotation.x += .01;
% H4 g5 [, Q5 O  k$ [! U    cube.rotation.y += .02;) u; M& g# f0 t9 Q8 V
    cube.rotation.z += .02;
8 O$ D0 ?- y/ V% C}
! q7 }+ {/ X4 k1 {3 d
& S$ j# i  p: U( H: ]var render = function () {$ c8 F1 e# ]+ p: m0 a2 ~
    renderer.render(scene, camera);+ s" b. w5 z2 T* a; C$ O# k+ e- g) a4 l3 n
}
+ l- Y7 ?6 k, u  j  F4 [: Y
9 |2 S" C( V6 N) k# @% g
4 I! j: ~0 T! P7 m% A9 Y8 f- P2 i
& X7 M9 L- I& i% x( }var Gameloop = function () {) o2 F: d+ d) J6 x
    requestAnimationFrame(Gameloop);4 q3 V; e  v4 \
    update();" F8 u/ ^$ d9 P, X9 d9 U0 H
    render();
! `+ Z  o4 U, j& b}3 Q- r3 g1 X0 N3 X

" E& ~! U, T. ?8 E8 M9 p1 AGameloop();' ?/ G& y0 t# `
[/mw_shl_code]
1 R# H0 ^& l1 F+ `6 h7 U, l9 E7 \& i% o

2 S$ |% i( v! j8 V引入争取的html," {; X) U+ j$ U1 P7 n
6 X/ G( r3 t* @" ?7 C. c  v
[mw_shl_code=html,true]<!DOCTYPE html>6 H6 k  q4 [. J% y  [
<html>
1 b# M' c5 M4 v! f% q
( b$ ]* o9 @2 z5 @! o  A3 M7 _<head>
; g; C" {3 ^: z0 \0 R; X# a    <title>hello ThreeJS</title>6 p0 E; C/ Z( q
    <style>
5 I* d3 p( V& b9 W' T* n        body {
9 M5 Q1 }) x! n( _, u4 R            margin: 0;7 a, `( C" o6 N& a+ t$ S2 u7 r
        }* k( ^8 o- u5 m8 g) f
. s* `3 J) o0 D4 G" }2 o2 n9 `% F
        canvas {
: {' s1 \( h  _, ~4 @& r; G- {            width: 100%;
2 P; G! E0 R# V            height: 100%;
4 P. P4 j# Y6 ^# [0 C( h        }( ]8 p; o5 A+ e- ]+ D" k! P

% ~8 \% h8 R5 @8 t* I% Z& Z/ F        h1 {
) L% j$ F8 f3 P2 C. }! y            color: aqua;
& A3 }$ a8 d  k9 E7 d' U# l        }0 \, k) _" J& G5 X, k
    </style>
# w* Q  {6 l1 j% \2 A) c% J8 u</head>6 _6 q; S$ v- u+ q' |. M
) {# p# ~" Y/ e9 H( e8 j
<body>* H' X6 S' D+ D& e" S9 E0 Z
<script src="js/three.js"></script>. e& k4 j2 Q/ c, O4 t
    <script src="js/OrbitControls.js"></script>
" C# b1 P1 F6 W5 X9 B3 b- L    <script src="myjs.js"></script>4 c/ s  I5 j# D5 R$ A
  ! m6 P' ^3 {/ v, k1 |( k
7 G# d: T/ G0 K( g
- o1 _1 ]9 ^5 z! I' L9 G' ~

/ K+ N4 s+ C; g3 G1 y</body>- T: _4 N0 Z$ |% z. Z# E
" z4 h  P, S: z7 f
</html>[/mw_shl_code]
7 W7 X/ V$ I  x9 t: C! t$ C5 ~2 ]) x' r- Y. W2 I8 _4 U# [4 w
效果点击这里:) h; y3 o1 ^* J5 o: V/ w# Q

/ d+ C+ b3 j5 e; w6 ]http://plmhome.com/doteam/lesson1.html+ ]" b& p  l; [& Q+ R
! P& Y. D) W- B/ x6 {/ A3 c0 |) F* R  E

7 |' {  o, b% `( i1 @. k7 b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了