Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
8377d938
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,发现更多精彩内容 >>
提交
8377d938
编写于
4月 19, 2012
作者:
Z
zz85
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed ParametricGeometry bugs
上级
3e70070a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
92 addition
and
63 deletion
+92
-63
examples/webgl_geometries2.html
examples/webgl_geometries2.html
+50
-35
src/extras/geometries/ParametricGeometries.js
src/extras/geometries/ParametricGeometries.js
+30
-19
src/extras/geometries/ParametricGeometry.js
src/extras/geometries/ParametricGeometry.js
+12
-9
未找到文件。
examples/webgl_geometries2.html
浏览文件 @
8377d938
...
...
@@ -9,7 +9,7 @@
font-family
:
Monospace
;
background-color
:
#000
;
margin
:
0px
;
overflow
:
hidden
;
/*overflow: hidden;*/
}
</style>
</head>
...
...
@@ -22,6 +22,7 @@
<script
src=
"js/CurveExtras.js"
></script>
<script
src=
"js/UVsUtils.js"
></script>
<script
src=
"../src/extras/geometries/ParametricGeometry.js"
></script>
<script
src=
"../src/extras/geometries/ParametricGeometries.js"
></script>
<script>
...
...
@@ -68,13 +69,13 @@
var
q
=
3
;
var
radius
=
150
,
tube
=
10
,
segmentsR
=
50
,
segmentsT
=
20
;
var
GrannyKnot
=
new
THREE
.
Curves
.
GrannyKnot
();
var
torus
=
new
THREE
.
TorusKnotGeometry
(
radius
,
tube
,
segmentsR
,
segmentsT
,
p
,
q
,
heightScale
);
var
torus2
=
new
THREE
.
TorusKnotGeometry2
(
radius
,
tube
,
segmentsR
,
segmentsT
,
p
,
q
,
heightScale
);
var
sphere
=
new
THREE
.
SphereGeometry
(
75
,
20
,
10
);
var
sphere2
=
new
THREE
.
SphereGeometry2
(
75
,
20
,
10
);
var
tube
=
new
THREE
.
TubeGeometry
(
GrannyKnot
,
150
,
2
,
8
,
true
,
false
);
var
tube2
=
new
THREE
.
TubeGeometry2
(
GrannyKnot
,
150
,
2
,
8
,
true
,
false
);
//
var GrannyKnot = new THREE.Curves.GrannyKnot();
//
var torus = new THREE.TorusKnotGeometry( radius, tube, segmentsR, segmentsT, p , q, heightScale );
//
var torus2 = new THREE.TorusKnotGeometry2( radius, tube, segmentsR, segmentsT, p , q, heightScale );
//
var sphere = new THREE.SphereGeometry( 75, 20, 10 );
//
var sphere2 = new THREE.SphereGeometry2( 75, 20, 10 );
//
var tube = new THREE.TubeGeometry(GrannyKnot, 150, 2, 8, true, false);
//
var tube2 = new THREE.TubeGeometry2(GrannyKnot, 150, 2, 8, true, false);
// var benchmarkCopies = 1000;
...
...
@@ -86,46 +87,60 @@
// scene.add( object );
// }
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
torus
,
materials
);
console
.
log
(
THREE
.
ParametricGeometries
);
var
geo
=
new
THREE
.
ParametricGeometry
(
20
,
20
,
THREE
.
ParametricGeometries
.
klein
);
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
geo
,
materials
);
object
.
children
[
0
].
doubleSided
=
true
;
object
.
position
.
set
(
0
,
0
,
0
);
object
.
scale
.
multiplyScalar
(
10
);
scene
.
add
(
object
);
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
torus2
,
materials
);
object
.
position
.
set
(
0
,
100
,
0
);
scene
.
add
(
object
);
// var geo = new THREE.ParametricGeometry(10, 10, THREE.ParametricGeometries.plane(200, 200));
THREE
.
UVsDebug
(
geo
);
document
.
body
.
appendChild
(
THREE
.
UVsDebug
(
geo
));
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
geo
,
materials
);
object
.
children
[
0
].
doubleSided
=
true
;
// object = THREE.SceneUtils.createMultiMaterialObject( torus, materials );
// object.position.set( 0, 0, 0 );
// scene.add( object );
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
sphere
,
materials
);
object
.
position
.
set
(
500
,
0
,
0
);
scene
.
add
(
object
);
// object = THREE.SceneUtils.createMultiMaterialObject( torus2
, materials );
// object.position.set( 0, 10
0, 0 );
//
scene.add( object );
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
sphere2
,
materials
);
object
.
position
.
set
(
200
,
0
,
0
);
scene
.
add
(
object
);
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
tube
,
materials
);
object
.
position
.
set
(
0
,
0
,
0
);
scene
.
add
(
object
);
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
tube2
,
materials
);
object
.
position
.
set
(
100
,
0
,
0
);
scene
.
add
(
object
);
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
new
THREE
.
ParametricGeometry
(
10
,
10
,
klein
)
,
materials
);
object
.
position
.
set
(
1
00
,
0
,
0
);
scene
.
add
(
object
);
// object = THREE.SceneUtils.createMultiMaterialObject( sphere
, materials );
// object.position.set( 5
00, 0, 0 );
//
scene.add( object );
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
new
THREE
.
PlaneGeometry
(
400
,
400
,
4
,
4
),
materials
);
// object.children[ 0 ].doubleSided = true;
object
.
position
.
set
(
-
200
,
100
,
0
);
scene
.
add
(
object
);
// object = THREE.SceneUtils.createMultiMaterialObject( sphere2, materials );
// object.position.set( 200, 0, 0 );
// scene.add( object );
// object = THREE.SceneUtils.createMultiMaterialObject( tube, materials );
// object.position.set( 0, 0, 0 );
// scene.add( object );
// object = THREE.SceneUtils.createMultiMaterialObject( tube2, materials );
// object.position.set( 100, 0, 0 );
// scene.add( object );
object
=
THREE
.
SceneUtils
.
createMultiMaterialObject
(
new
THREE
.
PlaneGeometry2
(
400
,
400
,
4
,
4
),
materials
);
// object = THREE.SceneUtils.createMultiMaterialObject( new THREE.ParametricGeometry(10, 10, klein) , materials );
// object.position.set( 100, 0, 0 );
// scene.add( object );
// object = THREE.SceneUtils.createMultiMaterialObject( new THREE.PlaneGeometry( 400, 400, 4, 4 ), materials );
// // object.children[ 0 ].doubleSided = true;
// object.position.set( -200, 100, 0 );
// scene.add( object );
// object = THREE.SceneUtils.createMultiMaterialObject( new THREE.PlaneGeometry2( 400, 400, 4, 4 ), materials );
// object.children[ 0 ].doubleSided = true;
object
.
position
.
set
(
-
200
,
100
,
0
);
scene
.
add
(
object
);
//
object.position.set( -200, 100, 0 );
//
scene.add( object );
object
=
new
THREE
.
AxisHelper
();
object
.
position
.
set
(
200
,
0
,
-
200
);
...
...
src/extras/geometries/ParametricGeometries.js
浏览文件 @
8377d938
...
...
@@ -121,29 +121,41 @@ THREE.TubeGeometry2.prototype.constructor = THREE.TubeGeometry2;
THREE
.
TorusKnotGeometry2
.
prototype
=
new
THREE
.
Geometry
();
THREE
.
TorusKnotGeometry2
.
prototype
.
constructor
=
THREE
.
TorusKnotGeometry2
;
var
sin
=
Math
.
sin
,
cos
=
Math
.
cos
,
pi
=
Math
.
PI
;
THREE
.
ParametricGeometries
=
{
klein
:
function
(
v
,
u
)
{
u
*=
pi
;
v
*=
2
*
pi
;
u
=
u
*
2
;
var
x
,
y
,
z
;
if
(
u
<
pi
)
{
x
=
3
*
cos
(
u
)
*
(
1
+
sin
(
u
))
+
(
2
*
(
1
-
cos
(
u
)
/
2
))
*
cos
(
u
)
*
cos
(
v
);
z
=
-
8
*
sin
(
u
)
-
2
*
(
1
-
cos
(
u
)
/
2
)
*
sin
(
u
)
*
cos
(
v
);
}
else
{
x
=
3
*
cos
(
u
)
*
(
1
+
sin
(
u
))
+
(
2
*
(
1
-
cos
(
u
)
/
2
))
*
cos
(
v
+
pi
);
z
=
-
8
*
sin
(
u
);
}
y
=
-
2
*
(
1
-
cos
(
u
)
/
2
)
*
sin
(
v
);
return
new
THREE
.
Vector3
(
x
,
y
,
z
);
},
plane
:
function
(
width
,
height
)
{
return
function
(
u
,
v
)
{
var
x
=
u
*
width
;
var
y
=
0
;
var
z
=
v
*
height
;
function
klein
(
u
,
v
)
{
u
*=
pi
;
v
*=
2
*
pi
;
console
.
log
(
x
,
y
,
z
);
u
=
u
*
2
;
var
x
,
y
,
z
;
if
(
u
<
pi
)
{
x
=
3
*
cos
(
u
)
*
(
1
+
sin
(
u
))
+
(
2
*
(
1
-
cos
(
u
)
/
2
))
*
cos
(
u
)
*
cos
(
v
);
z
=
-
8
*
sin
(
u
)
-
2
*
(
1
-
cos
(
u
)
/
2
)
*
sin
(
u
)
*
cos
(
v
);
}
else
{
x
=
3
*
cos
(
u
)
*
(
1
+
sin
(
u
))
+
(
2
*
(
1
-
cos
(
u
)
/
2
))
*
cos
(
v
+
pi
);
z
=
-
8
*
sin
(
u
);
return
new
THREE
.
Vector3
(
x
,
y
,
z
);
};
}
y
=
-
2
*
(
1
-
cos
(
u
)
/
2
)
*
sin
(
v
);
return
new
THREE
.
Vector3
(
x
,
y
,
z
);
}
};
THREE
.
SphereGeometry2
=
function
(
size
,
x
,
y
)
{
...
...
@@ -171,7 +183,6 @@ THREE.PlaneGeometry2 = function(width, depth, segmentsWidth, segmentsDepth) {
function
plane
(
u
,
v
)
{
console
.
log
(
'
u, v
'
,
u
,
v
);
var
x
=
u
*
width
;
var
y
=
0
;
var
z
=
v
*
depth
;
...
...
src/extras/geometries/ParametricGeometry.js
浏览文件 @
8377d938
...
...
@@ -17,6 +17,9 @@ THREE.ParametricGeometry = function ( slices, stacks, func ) {
var
i
,
il
,
j
,
p
;
var
u
,
v
;
var
stackCount
=
stacks
+
1
;
var
sliceCount
=
slices
+
1
;
for
(
i
=
0
;
i
<=
stacks
;
i
++
)
{
v
=
i
/
stacks
;
...
...
@@ -33,34 +36,34 @@ THREE.ParametricGeometry = function ( slices, stacks, func ) {
var
v
=
0
,
next
;
var
a
,
b
,
c
,
d
;
var
uva
,
uvb
,
u
b
c
,
uvd
;
var
uva
,
uvb
,
u
v
c
,
uvd
;
// Some UV / Face orientation work needs to be done here...
for
(
i
=
0
;
i
<
stacks
;
i
++
)
{
for
(
j
=
0
;
j
<
slices
;
j
++
)
{
a
=
i
*
stack
s
+
j
;
b
=
i
*
stack
s
+
j
+
1
;
c
=
(
i
+
1
)
*
stack
s
+
j
;
d
=
(
i
+
1
)
*
stack
s
+
j
+
1
;
a
=
i
*
stack
Count
+
j
;
b
=
i
*
stack
Count
+
j
+
1
;
c
=
(
i
+
1
)
*
stack
Count
+
j
;
d
=
(
i
+
1
)
*
stack
Count
+
j
+
1
;
uva
=
new
THREE
.
UV
(
i
/
slices
,
j
/
stacks
);
uvb
=
new
THREE
.
UV
(
i
/
slices
,
(
j
+
1
)
/
stacks
);
uvc
=
new
THREE
.
UV
(
(
i
+
1
)
/
slices
,
j
/
stacks
);
uvd
=
new
THREE
.
UV
(
(
i
+
1
)
/
slices
,
(
j
+
1
)
/
stacks
);
faces
.
push
(
new
THREE
.
Face3
(
a
,
b
,
c
)
);
faces
.
push
(
new
THREE
.
Face3
(
b
,
d
,
c
)
);
uvs
.
push
(
[
uva
,
u
bc
,
uvc
]
);
uvs
.
push
(
[
uva
,
u
vb
,
uvc
]
);
uvs
.
push
(
[
uvb
,
uvd
,
uvc
]
);
}
}
console
.
log
(
this
);
// magic bullet
//
this.mergeVertices();
this
.
mergeVertices
();
this
.
computeCentroids
();
this
.
computeFaceNormals
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录