Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
55f6b683
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
55f6b683
编写于
3月 26, 2012
作者:
Z
zz85
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
attempting camera animation along extruded spline
上级
1b4dbfa6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
69 addition
and
5 deletion
+69
-5
examples/webgl_geometry_extrude_splines.html
examples/webgl_geometry_extrude_splines.html
+64
-5
src/extras/geometries/TubeGeometry.js
src/extras/geometries/TubeGeometry.js
+5
-0
未找到文件。
examples/webgl_geometry_extrude_splines.html
浏览文件 @
55f6b683
...
@@ -411,12 +411,14 @@
...
@@ -411,12 +411,14 @@
var
closed
=
true
;
var
closed
=
true
;
var
debug
=
true
;
var
debug
=
true
;
var
parent
;
var
parent
;
var
tubeMesh
;
var
tube
,
tubeMesh
;
var
animation
=
false
;
var
scale
;
function
addTube
()
{
function
addTube
()
{
var
value
=
document
.
getElementById
(
'
dropdown
'
).
value
;
var
value
=
document
.
getElementById
(
'
dropdown
'
).
value
;
var
scale
=
parseInt
(
document
.
getElementById
(
'
scale
'
).
value
);
scale
=
parseInt
(
document
.
getElementById
(
'
scale
'
).
value
);
var
segments
=
parseInt
(
document
.
getElementById
(
'
segments
'
).
value
);
var
segments
=
parseInt
(
document
.
getElementById
(
'
segments
'
).
value
);
var
closedv
=
document
.
getElementById
(
'
closed
'
).
value
;
var
closedv
=
document
.
getElementById
(
'
closed
'
).
value
;
var
debugv
=
document
.
getElementById
(
'
debug
'
).
value
;
var
debugv
=
document
.
getElementById
(
'
debug
'
).
value
;
...
@@ -426,10 +428,10 @@
...
@@ -426,10 +428,10 @@
extrudePath
=
splines
[
value
];
extrudePath
=
splines
[
value
];
var
tube
=
new
THREE
.
TubeGeometry
(
extrudePath
,
segments
,
2
,
3
,
closed
,
debug
);
tube
=
new
THREE
.
TubeGeometry
(
extrudePath
,
segments
,
2
,
3
,
closed
,
debug
);
addGeometry
(
tube
,
0xff00ff
,
0
,
-
8
0
,
0
,
0
,
0
,
0
,
scale
);
addGeometry
(
tube
,
0xff00ff
,
0
,
0
,
0
,
0
,
0
,
0
,
scale
);
}
}
function
addGeometry
(
geometry
,
color
,
x
,
y
,
z
,
rx
,
ry
,
rz
,
s
)
{
function
addGeometry
(
geometry
,
color
,
x
,
y
,
z
,
rx
,
ry
,
rz
,
s
)
{
...
@@ -483,7 +485,8 @@
...
@@ -483,7 +485,8 @@
scene
=
new
THREE
.
Scene
();
scene
=
new
THREE
.
Scene
();
camera
=
new
THREE
.
PerspectiveCamera
(
50
,
window
.
innerWidth
/
window
.
innerHeight
,
1
,
1000
);
// 50
camera
=
new
THREE
.
PerspectiveCamera
(
79
,
window
.
innerWidth
/
window
.
innerHeight
,
0.01
,
1000
);
camera
.
position
.
set
(
0
,
50
,
500
);
camera
.
position
.
set
(
0
,
50
,
500
);
scene
.
add
(
camera
);
scene
.
add
(
camera
);
...
@@ -596,6 +599,62 @@
...
@@ -596,6 +599,62 @@
function
render
()
{
function
render
()
{
if
(
animation
)
{
// Try Animate Camera Along Spline
var
time
=
Date
.
now
();
var
looptime
=
20
*
1000
;
var
t
=
(
time
%
looptime
)
/
looptime
;
var
pos
=
tube
.
path
.
getPointAt
(
t
);
pos
.
multiplyScalar
(
scale
);
var
lookAt
=
tube
.
path
.
getPointAt
(
t
+
0.001
);
lookAt
.
multiplyScalar
(
scale
);
// interpolation
var
segments
=
tube
.
tangents
.
length
;
var
pickt
=
t
*
segments
;
var
pick
=
Math
.
floor
(
pickt
);
var
pickNext
=
(
pick
+
1
)
%
segments
;
var
diff
=
new
THREE
.
Vector3
();
diff
.
sub
(
tube
.
binormals
[
pickNext
],
tube
.
binormals
[
pick
]);
diff
.
multiplyScalar
(
pickt
-
pick
).
addSelf
(
tube
.
binormals
[
pick
]);
var
offset
=
50
;
var
v
=
diff
.
multiplyScalar
(
offset
);
pos
.
addSelf
(
v
);
// console.log(t, pos);
camera
.
position
=
pos
;
// camera.lookAt(pos);
camera
.
lookAt
(
lookAt
);
// var offset = 50;
// var segments = tube.tangents.length;
// var pickt = t * segments;
// var pick = Math.floor(pickt);
// var pickNext = (pick + 1) % segments;
// var tangent = tube.tangents[pick]; //.clone().addSelf(tube.tangents[pick]).multiplyScalar(0.5);
// var normal = tube.normals[pick].clone().addSelf(tube.normals[pick]).multiplyScalar(0.5 * offset);
// pos.addSelf(normal);
// // console.log(t, pos);
// camera.position = pos;
// // camera.lookAt(pos);
// var lookAt = tube.path.getPointAt(t + 0.001);
// lookAt.multiplyScalar(scale);
// camera.lookAt(lookAt);
}
parent
.
rotation
.
y
+=
(
targetRotation
-
parent
.
rotation
.
y
)
*
0.05
;
parent
.
rotation
.
y
+=
(
targetRotation
-
parent
.
rotation
.
y
)
*
0.05
;
renderer
.
render
(
scene
,
camera
);
renderer
.
render
(
scene
,
camera
);
...
...
src/extras/geometries/TubeGeometry.js
浏览文件 @
55f6b683
...
@@ -51,6 +51,11 @@ THREE.TubeGeometry = function( path, segments, radius, segmentsRadius, closed, d
...
@@ -51,6 +51,11 @@ THREE.TubeGeometry = function( path, segments, radius, segmentsRadius, closed, d
a
,
b
,
c
,
d
,
a
,
b
,
c
,
d
,
uva
,
uvb
,
uvc
,
uvd
;
uva
,
uvb
,
uvc
,
uvd
;
// expose internals
this
.
tangents
=
tangents
;
this
.
normals
=
normals
;
this
.
binormals
=
binormals
;
function
vert
(
x
,
y
,
z
)
{
function
vert
(
x
,
y
,
z
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录