Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
bb485afe
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,发现更多精彩内容 >>
提交
bb485afe
编写于
4月 03, 2017
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reduced webvr_rollercoaster scale.
上级
9f0e2a00
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
103 addition
and
92 deletion
+103
-92
examples/js/RollerCoaster.js
examples/js/RollerCoaster.js
+59
-59
examples/webvr_rollercoaster.html
examples/webvr_rollercoaster.html
+44
-33
未找到文件。
examples/js/RollerCoaster.js
浏览文件 @
bb485afe
...
...
@@ -2,7 +2,7 @@
* @author mrdoob / http://mrdoob.com/
*/
var
RollerCoasterGeometry
=
function
(
curve
,
size
)
{
function
RollerCoasterGeometry
(
curve
,
divisions
)
{
THREE
.
BufferGeometry
.
call
(
this
);
...
...
@@ -28,13 +28,13 @@ var RollerCoasterGeometry = function ( curve, size ) {
// shapes
var
step
=
[
new
THREE
.
Vector3
(
-
2.
25
,
0
,
0
),
new
THREE
.
Vector3
(
0
,
-
0.5
,
0
),
new
THREE
.
Vector3
(
0
,
-
1.
75
,
0
),
new
THREE
.
Vector3
(
-
0.2
25
,
0
,
0
),
new
THREE
.
Vector3
(
0
,
-
0.050
,
0
),
new
THREE
.
Vector3
(
0
,
-
0.1
75
,
0
),
new
THREE
.
Vector3
(
0
,
-
0.5
,
0
),
new
THREE
.
Vector3
(
2.
25
,
0
,
0
),
new
THREE
.
Vector3
(
0
,
-
1.
75
,
0
)
new
THREE
.
Vector3
(
0
,
-
0.050
,
0
),
new
THREE
.
Vector3
(
0.2
25
,
0
,
0
),
new
THREE
.
Vector3
(
0
,
-
0.1
75
,
0
)
];
var
PI2
=
Math
.
PI
*
2
;
...
...
@@ -45,7 +45,7 @@ var RollerCoasterGeometry = function ( curve, size ) {
for
(
var
i
=
0
;
i
<
sides
;
i
++
)
{
var
angle
=
(
i
/
sides
)
*
PI2
;
tube1
.
push
(
new
THREE
.
Vector3
(
Math
.
sin
(
angle
)
*
0.
6
,
Math
.
cos
(
angle
)
*
0.
6
,
0
)
);
tube1
.
push
(
new
THREE
.
Vector3
(
Math
.
sin
(
angle
)
*
0.
06
,
Math
.
cos
(
angle
)
*
0.0
6
,
0
)
);
}
...
...
@@ -55,14 +55,14 @@ var RollerCoasterGeometry = function ( curve, size ) {
for
(
var
i
=
0
;
i
<
sides
;
i
++
)
{
var
angle
=
(
i
/
sides
)
*
PI2
;
tube2
.
push
(
new
THREE
.
Vector3
(
Math
.
sin
(
angle
)
*
0.
25
,
Math
.
cos
(
angle
)
*
0.
25
,
0
)
);
tube2
.
push
(
new
THREE
.
Vector3
(
Math
.
sin
(
angle
)
*
0.
025
,
Math
.
cos
(
angle
)
*
0.0
25
,
0
)
);
}
var
vector
=
new
THREE
.
Vector3
();
var
normal
=
new
THREE
.
Vector3
();
var
drawShape
=
function
(
shape
,
color
)
{
function
drawShape
(
shape
,
color
)
{
normal
.
set
(
0
,
0
,
-
1
).
applyQuaternion
(
quaternion
);
...
...
@@ -104,7 +104,7 @@ var RollerCoasterGeometry = function ( curve, size ) {
var
normal3
=
new
THREE
.
Vector3
();
var
normal4
=
new
THREE
.
Vector3
();
var
extrudeShape
=
function
(
shape
,
offset
,
color
)
{
function
extrudeShape
(
shape
,
offset
,
color
)
{
for
(
var
j
=
0
,
jl
=
shape
.
length
;
j
<
jl
;
j
++
)
{
...
...
@@ -175,9 +175,9 @@ var RollerCoasterGeometry = function ( curve, size ) {
var
offset
=
new
THREE
.
Vector3
();
for
(
var
i
=
1
;
i
<=
size
;
i
++
)
{
for
(
var
i
=
1
;
i
<=
divisions
;
i
++
)
{
point
.
copy
(
curve
.
getPointAt
(
i
/
size
)
);
point
.
copy
(
curve
.
getPointAt
(
i
/
divisions
)
);
up
.
set
(
0
,
1
,
0
);
...
...
@@ -195,9 +195,9 @@ var RollerCoasterGeometry = function ( curve, size ) {
}
extrudeShape
(
tube1
,
offset
.
set
(
0
,
-
1.
25
,
0
),
color2
);
extrudeShape
(
tube2
,
offset
.
set
(
2
,
0
,
0
),
color1
);
extrudeShape
(
tube2
,
offset
.
set
(
-
2
,
0
,
0
),
color1
);
extrudeShape
(
tube1
,
offset
.
set
(
0
,
-
0.1
25
,
0
),
color2
);
extrudeShape
(
tube2
,
offset
.
set
(
0.2
,
0
,
0
),
color1
);
extrudeShape
(
tube2
,
offset
.
set
(
-
0.2
,
0
,
0
),
color1
);
prevPoint
.
copy
(
point
);
prevQuaternion
.
copy
(
quaternion
);
...
...
@@ -214,7 +214,7 @@ var RollerCoasterGeometry = function ( curve, size ) {
RollerCoasterGeometry
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
var
RollerCoasterLiftersGeometry
=
function
(
curve
,
size
)
{
function
RollerCoasterLiftersGeometry
(
curve
,
divisions
)
{
THREE
.
BufferGeometry
.
call
(
this
);
...
...
@@ -231,21 +231,21 @@ var RollerCoasterLiftersGeometry = function ( curve, size ) {
// shapes
var
tube1
=
[
new
THREE
.
Vector3
(
0
,
0.
5
,
-
0.
5
),
new
THREE
.
Vector3
(
0
,
0.
5
,
0.
5
),
new
THREE
.
Vector3
(
0
,
-
0.5
,
0
)
new
THREE
.
Vector3
(
0
,
0.
05
,
-
0.0
5
),
new
THREE
.
Vector3
(
0
,
0.
05
,
0.0
5
),
new
THREE
.
Vector3
(
0
,
-
0.
0
5
,
0
)
];
var
tube2
=
[
new
THREE
.
Vector3
(
-
0.
5
,
0
,
0.
5
),
new
THREE
.
Vector3
(
-
0.
5
,
0
,
-
0.
5
),
new
THREE
.
Vector3
(
0.5
,
0
,
0
)
new
THREE
.
Vector3
(
-
0.
05
,
0
,
0.0
5
),
new
THREE
.
Vector3
(
-
0.
05
,
0
,
-
0.0
5
),
new
THREE
.
Vector3
(
0.
0
5
,
0
,
0
)
];
var
tube3
=
[
new
THREE
.
Vector3
(
0.
5
,
0
,
-
0.
5
),
new
THREE
.
Vector3
(
0.
5
,
0
,
0.
5
),
new
THREE
.
Vector3
(
-
0.5
,
0
,
0
)
new
THREE
.
Vector3
(
0.
05
,
0
,
-
0.0
5
),
new
THREE
.
Vector3
(
0.
05
,
0
,
0.0
5
),
new
THREE
.
Vector3
(
-
0.
0
5
,
0
,
0
)
];
var
vector1
=
new
THREE
.
Vector3
();
...
...
@@ -258,7 +258,7 @@ var RollerCoasterLiftersGeometry = function ( curve, size ) {
var
normal3
=
new
THREE
.
Vector3
();
var
normal4
=
new
THREE
.
Vector3
();
var
extrudeShape
=
function
(
shape
,
fromPoint
,
toPoint
)
{
function
extrudeShape
(
shape
,
fromPoint
,
toPoint
)
{
for
(
var
j
=
0
,
jl
=
shape
.
length
;
j
<
jl
;
j
++
)
{
...
...
@@ -322,10 +322,10 @@ var RollerCoasterLiftersGeometry = function ( curve, size ) {
var
fromPoint
=
new
THREE
.
Vector3
();
var
toPoint
=
new
THREE
.
Vector3
();
for
(
var
i
=
1
;
i
<=
size
;
i
++
)
{
for
(
var
i
=
1
;
i
<=
divisions
;
i
++
)
{
point
.
copy
(
curve
.
getPointAt
(
i
/
size
)
);
tangent
.
copy
(
curve
.
getTangentAt
(
i
/
size
)
);
point
.
copy
(
curve
.
getPointAt
(
i
/
divisions
)
);
tangent
.
copy
(
curve
.
getTangentAt
(
i
/
divisions
)
);
var
angle
=
Math
.
atan2
(
tangent
.
x
,
tangent
.
z
);
...
...
@@ -333,33 +333,33 @@ var RollerCoasterLiftersGeometry = function ( curve, size ) {
//
if
(
point
.
y
>
10
0
)
{
if
(
point
.
y
>
10
)
{
fromPoint
.
set
(
-
7.5
,
-
3.
5
,
0
);
fromPoint
.
set
(
-
0.75
,
-
0.3
5
,
0
);
fromPoint
.
applyQuaternion
(
quaternion
);
fromPoint
.
add
(
point
);
toPoint
.
set
(
7.5
,
-
3.
5
,
0
);
toPoint
.
set
(
0.75
,
-
0.3
5
,
0
);
toPoint
.
applyQuaternion
(
quaternion
);
toPoint
.
add
(
point
);
extrudeShape
(
tube1
,
fromPoint
,
toPoint
);
fromPoint
.
set
(
-
7
,
-
3
,
0
);
fromPoint
.
set
(
-
0.7
,
-
0.
3
,
0
);
fromPoint
.
applyQuaternion
(
quaternion
);
fromPoint
.
add
(
point
);
toPoint
.
set
(
-
7
,
-
point
.
y
,
0
);
toPoint
.
set
(
-
0.
7
,
-
point
.
y
,
0
);
toPoint
.
applyQuaternion
(
quaternion
);
toPoint
.
add
(
point
);
extrudeShape
(
tube2
,
fromPoint
,
toPoint
);
fromPoint
.
set
(
7
,
-
3
,
0
);
fromPoint
.
set
(
0.7
,
-
0.
3
,
0
);
fromPoint
.
applyQuaternion
(
quaternion
);
fromPoint
.
add
(
point
);
toPoint
.
set
(
7
,
-
point
.
y
,
0
);
toPoint
.
set
(
0.
7
,
-
point
.
y
,
0
);
toPoint
.
applyQuaternion
(
quaternion
);
toPoint
.
add
(
point
);
...
...
@@ -367,7 +367,7 @@ var RollerCoasterLiftersGeometry = function ( curve, size ) {
}
else
{
fromPoint
.
set
(
0
,
-
2
,
0
);
fromPoint
.
set
(
0
,
-
0.
2
,
0
);
fromPoint
.
applyQuaternion
(
quaternion
);
fromPoint
.
add
(
point
);
...
...
@@ -388,7 +388,7 @@ var RollerCoasterLiftersGeometry = function ( curve, size ) {
RollerCoasterLiftersGeometry
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
var
RollerCoasterShadowGeometry
=
function
(
curve
,
size
)
{
function
RollerCoasterShadowGeometry
(
curve
,
divisions
)
{
THREE
.
BufferGeometry
.
call
(
this
);
...
...
@@ -412,9 +412,9 @@ var RollerCoasterShadowGeometry = function ( curve, size ) {
var
vector3
=
new
THREE
.
Vector3
();
var
vector4
=
new
THREE
.
Vector3
();
for
(
var
i
=
1
;
i
<=
size
;
i
++
)
{
for
(
var
i
=
1
;
i
<=
divisions
;
i
++
)
{
point
.
copy
(
curve
.
getPointAt
(
i
/
size
)
);
point
.
copy
(
curve
.
getPointAt
(
i
/
divisions
)
);
point
.
y
=
0
;
forward
.
subVectors
(
point
,
prevPoint
);
...
...
@@ -423,19 +423,19 @@ var RollerCoasterShadowGeometry = function ( curve, size ) {
quaternion
.
setFromAxisAngle
(
up
,
angle
);
vector1
.
set
(
-
3
,
0
,
0
);
vector1
.
set
(
-
0.
3
,
0
,
0
);
vector1
.
applyQuaternion
(
quaternion
);
vector1
.
add
(
point
);
vector2
.
set
(
3
,
0
,
0
);
vector2
.
set
(
0.
3
,
0
,
0
);
vector2
.
applyQuaternion
(
quaternion
);
vector2
.
add
(
point
);
vector3
.
set
(
3
,
0
,
0
);
vector3
.
set
(
0.
3
,
0
,
0
);
vector3
.
applyQuaternion
(
prevQuaternion
);
vector3
.
add
(
prevPoint
);
vector4
.
set
(
-
3
,
0
,
0
);
vector4
.
set
(
-
0.
3
,
0
,
0
);
vector4
.
applyQuaternion
(
prevQuaternion
);
vector4
.
add
(
prevPoint
);
...
...
@@ -458,7 +458,7 @@ var RollerCoasterShadowGeometry = function ( curve, size ) {
RollerCoasterShadowGeometry
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
var
SkyGeometry
=
function
()
{
function
SkyGeometry
()
{
THREE
.
BufferGeometry
.
call
(
this
);
...
...
@@ -466,11 +466,11 @@ var SkyGeometry = function () {
for
(
var
i
=
0
;
i
<
100
;
i
++
)
{
var
x
=
Math
.
random
()
*
800
0
-
40
00
;
var
y
=
Math
.
random
()
*
50
0
+
50
0
;
var
z
=
Math
.
random
()
*
800
0
-
40
00
;
var
x
=
Math
.
random
()
*
800
-
4
00
;
var
y
=
Math
.
random
()
*
50
+
5
0
;
var
z
=
Math
.
random
()
*
800
-
4
00
;
var
size
=
Math
.
random
()
*
40
0
+
20
0
;
var
size
=
Math
.
random
()
*
40
+
2
0
;
vertices
.
push
(
x
-
size
,
y
,
z
-
size
);
vertices
.
push
(
x
+
size
,
y
,
z
-
size
);
...
...
@@ -489,7 +489,7 @@ var SkyGeometry = function () {
SkyGeometry
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
var
TreesGeometry
=
function
(
landscape
)
{
function
TreesGeometry
(
landscape
)
{
THREE
.
BufferGeometry
.
call
(
this
);
...
...
@@ -501,10 +501,10 @@ var TreesGeometry = function ( landscape ) {
for
(
var
i
=
0
;
i
<
2000
;
i
++
)
{
var
x
=
Math
.
random
()
*
500
0
-
250
0
;
var
z
=
Math
.
random
()
*
500
0
-
250
0
;
var
x
=
Math
.
random
()
*
500
-
25
0
;
var
z
=
Math
.
random
()
*
500
-
25
0
;
raycaster
.
ray
.
origin
.
set
(
x
,
50
0
,
z
);
raycaster
.
ray
.
origin
.
set
(
x
,
50
,
z
);
var
intersections
=
raycaster
.
intersectObject
(
landscape
);
...
...
@@ -512,19 +512,19 @@ var TreesGeometry = function ( landscape ) {
var
y
=
intersections
[
0
].
point
.
y
;
var
height
=
Math
.
random
()
*
5
0
+
5
;
var
height
=
Math
.
random
()
*
5
+
0.
5
;
var
angle
=
Math
.
random
()
*
Math
.
PI
*
2
;
vertices
.
push
(
x
+
Math
.
sin
(
angle
)
*
10
,
y
,
z
+
Math
.
cos
(
angle
)
*
10
);
vertices
.
push
(
x
+
Math
.
sin
(
angle
)
,
y
,
z
+
Math
.
cos
(
angle
)
);
vertices
.
push
(
x
,
y
+
height
,
z
);
vertices
.
push
(
x
+
Math
.
sin
(
angle
+
Math
.
PI
)
*
10
,
y
,
z
+
Math
.
cos
(
angle
+
Math
.
PI
)
*
10
);
vertices
.
push
(
x
+
Math
.
sin
(
angle
+
Math
.
PI
)
,
y
,
z
+
Math
.
cos
(
angle
+
Math
.
PI
)
);
angle
+=
Math
.
PI
/
2
;
vertices
.
push
(
x
+
Math
.
sin
(
angle
)
*
10
,
y
,
z
+
Math
.
cos
(
angle
)
*
10
);
vertices
.
push
(
x
+
Math
.
sin
(
angle
)
,
y
,
z
+
Math
.
cos
(
angle
)
);
vertices
.
push
(
x
,
y
+
height
,
z
);
vertices
.
push
(
x
+
Math
.
sin
(
angle
+
Math
.
PI
)
*
10
,
y
,
z
+
Math
.
cos
(
angle
+
Math
.
PI
)
*
10
);
vertices
.
push
(
x
+
Math
.
sin
(
angle
+
Math
.
PI
)
,
y
,
z
+
Math
.
cos
(
angle
+
Math
.
PI
)
);
var
random
=
Math
.
random
()
*
0.1
;
...
...
examples/webvr_rollercoaster.html
浏览文件 @
bb485afe
...
...
@@ -52,36 +52,45 @@
var
train
=
new
THREE
.
Object3D
();
scene
.
add
(
train
);
var
camera
=
new
THREE
.
PerspectiveCamera
(
40
,
window
.
innerWidth
/
window
.
innerHeight
,
1
,
50
00
);
var
camera
=
new
THREE
.
PerspectiveCamera
(
40
,
window
.
innerWidth
/
window
.
innerHeight
,
0.1
,
5
00
);
camera
.
rotation
.
y
=
Math
.
PI
;
train
.
add
(
camera
);
// environment
var
geometry
=
new
THREE
.
Plane
Geometry
(
5000
,
50
00
,
15
,
15
);
var
geometry
=
new
THREE
.
Plane
BufferGeometry
(
500
,
5
00
,
15
,
15
);
geometry
.
applyMatrix
(
new
THREE
.
Matrix4
().
makeRotationX
(
-
Math
.
PI
/
2
)
);
var
material
=
new
THREE
.
MeshLambertMaterial
(
{
color
:
0x407000
,
shading
:
THREE
.
FlatShading
}
);
for
(
var
i
=
0
;
i
<
geometry
.
vertices
.
length
;
i
++
)
{
var
positions
=
geometry
.
attributes
.
position
.
array
;
var
vertex
=
new
THREE
.
Vector3
();
var
vertex
=
geometry
.
vertices
[
i
];
for
(
var
i
=
0
;
i
<
positions
.
length
;
i
+=
3
)
{
vertex
.
x
+=
Math
.
random
()
*
100
-
50
;
vertex
.
z
+=
Math
.
random
()
*
100
-
50
;
vertex
.
fromArray
(
positions
,
i
);
var
distance
=
(
vertex
.
distanceTo
(
scene
.
position
)
/
5
)
-
250
;
vertex
.
x
+=
Math
.
random
()
*
10
-
5
;
vertex
.
z
+=
Math
.
random
()
*
10
-
5
;
var
distance
=
(
vertex
.
distanceTo
(
scene
.
position
)
/
5
)
-
25
;
vertex
.
y
=
Math
.
random
()
*
Math
.
max
(
0
,
distance
);
vertex
.
toArray
(
positions
,
i
);
}
geometry
.
computeFaceNormals
();
geometry
.
computeVertexNormals
();
var
material
=
new
THREE
.
MeshLambertMaterial
(
{
color
:
0x407000
}
);
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
scene
.
add
(
mesh
);
var
geometry
=
new
TreesGeometry
(
mesh
);
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
side
:
THREE
.
DoubleSide
,
vertexColors
:
THREE
.
VertexColors
}
);
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
side
:
THREE
.
DoubleSide
,
vertexColors
:
THREE
.
VertexColors
}
);
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
scene
.
add
(
mesh
);
...
...
@@ -106,10 +115,10 @@
t
=
t
*
PI2
;
var
x
=
Math
.
sin
(
t
*
3
)
*
Math
.
cos
(
t
*
4
)
*
50
;
var
y
=
Math
.
sin
(
t
*
10
)
*
2
+
Math
.
cos
(
t
*
17
)
*
2
+
4
;
var
y
=
Math
.
sin
(
t
*
10
)
*
2
+
Math
.
cos
(
t
*
17
)
*
2
+
5
;
var
z
=
Math
.
sin
(
t
)
*
Math
.
sin
(
t
*
4
)
*
50
;
return
vector
.
set
(
x
,
y
,
z
).
multiplyScalar
(
2
0
);
return
vector
.
set
(
x
,
y
,
z
).
multiplyScalar
(
2
);
},
...
...
@@ -119,7 +128,8 @@
var
t1
=
Math
.
max
(
0
,
t
-
delta
);
var
t2
=
Math
.
min
(
1
,
t
+
delta
);
return
vector2
.
copy
(
this
.
getPointAt
(
t2
)
).
sub
(
this
.
getPointAt
(
t1
)
).
normalize
();
return
vector2
.
copy
(
this
.
getPointAt
(
t2
)
)
.
sub
(
this
.
getPointAt
(
t1
)
).
normalize
();
}
...
...
@@ -128,46 +138,47 @@
}
)();
var
geometry
=
new
RollerCoasterGeometry
(
curve
,
1500
);
var
material
=
new
THREE
.
MeshStandardMaterial
(
{
roughness
:
0.1
,
metalness
:
0
,
var
material
=
new
THREE
.
MeshPhongMaterial
(
{
vertexColors
:
THREE
.
VertexColors
}
);
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
scene
.
add
(
mesh
);
var
geometry
=
new
RollerCoasterLiftersGeometry
(
curve
,
100
);
var
material
=
new
THREE
.
MeshStandardMaterial
(
{
roughness
:
0.1
,
metalness
:
0
}
);
var
material
=
new
THREE
.
MeshPhongMaterial
();
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
mesh
.
position
.
y
=
1
;
mesh
.
position
.
y
=
0.
1
;
scene
.
add
(
mesh
);
var
geometry
=
new
RollerCoasterShadowGeometry
(
curve
,
500
);
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
color
:
0x000000
,
opacity
:
0.1
,
depthWrite
:
false
,
transparent
:
true
}
);
var
material
=
new
THREE
.
MeshBasicMaterial
(
{
color
:
0x305000
,
depthWrite
:
false
,
transparent
:
true
}
);
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
mesh
.
position
.
y
=
1
;
mesh
.
position
.
y
=
0.
1
;
scene
.
add
(
mesh
);
var
funfairs
=
[];
//
var
geometry
=
new
THREE
.
CylinderGeometry
(
100
,
100
,
50
,
15
);
var
material
=
new
THREE
.
MeshLambertMaterial
(
{
color
:
0xff8080
,
shading
:
THREE
.
FlatShading
}
);
var
geometry
=
new
THREE
.
CylinderBufferGeometry
(
10
,
10
,
5
,
15
);
var
material
=
new
THREE
.
MeshLambertMaterial
(
{
color
:
0xff8080
,
shading
:
THREE
.
FlatShading
}
);
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
mesh
.
position
.
set
(
-
80
0
,
100
,
-
70
0
);
mesh
.
position
.
set
(
-
80
,
10
,
-
7
0
);
mesh
.
rotation
.
x
=
Math
.
PI
/
2
;
scene
.
add
(
mesh
);
funfairs
.
push
(
mesh
);
var
geometry
=
new
THREE
.
CylinderGeometry
(
50
,
60
,
40
,
10
);
var
material
=
new
THREE
.
MeshLambertMaterial
(
{
color
:
0x8080ff
,
shading
:
THREE
.
FlatShading
}
);
var
geometry
=
new
THREE
.
CylinderBufferGeometry
(
5
,
6
,
4
,
10
);
var
material
=
new
THREE
.
MeshLambertMaterial
(
{
color
:
0x8080ff
,
shading
:
THREE
.
FlatShading
}
);
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
mesh
.
position
.
set
(
50
0
,
20
,
30
0
);
mesh
.
position
.
set
(
50
,
2
,
3
0
);
scene
.
add
(
mesh
);
funfairs
.
push
(
mesh
);
...
...
@@ -210,11 +221,11 @@
effect
.
requestAnimationFrame
(
animate
);
var
delta
=
(
time
-
prevTime
)
/
15
;
var
delta
=
time
-
prevTime
;
for
(
var
i
=
0
;
i
<
funfairs
.
length
;
i
++
)
{
funfairs
[
i
].
rotation
.
y
=
time
*
0.000
2
;
funfairs
[
i
].
rotation
.
y
=
time
*
0.000
4
;
}
...
...
@@ -224,13 +235,13 @@
progress
=
progress
%
1
;
position
.
copy
(
curve
.
getPointAt
(
progress
)
);
position
.
y
+=
3
;
position
.
y
+=
0.
3
;
train
.
position
.
copy
(
position
);
tangent
.
copy
(
curve
.
getTangentAt
(
progress
)
);
velocity
-=
tangent
.
y
*
0.000001
*
delta
;
velocity
-=
tangent
.
y
*
0.00000
0
1
*
delta
;
velocity
=
Math
.
max
(
0.00004
,
Math
.
min
(
0.0002
,
velocity
)
);
train
.
lookAt
(
lookAt
.
copy
(
position
).
add
(
tangent
)
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录