Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
207457a5
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,发现更多精彩内容 >>
提交
207457a5
编写于
4月 01, 2015
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added EdgesGeometry. See #6321.
上级
cf4d3e4f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
96 addition
and
83 deletion
+96
-83
src/extras/geometries/EdgesGeometry.js
src/extras/geometries/EdgesGeometry.js
+94
-0
src/extras/helpers/EdgesHelper.js
src/extras/helpers/EdgesHelper.js
+1
-83
utils/build/includes/extras.json
utils/build/includes/extras.json
+1
-0
未找到文件。
src/extras/geometries/EdgesGeometry.js
0 → 100644
浏览文件 @
207457a5
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE
.
EdgesGeometry
=
function
(
geometry
,
thresholdAngle
)
{
THREE
.
BufferGeometry
.
call
(
this
);
thresholdAngle
=
(
thresholdAngle
!==
undefined
)
?
thresholdAngle
:
1
;
var
thresholdDot
=
Math
.
cos
(
THREE
.
Math
.
degToRad
(
thresholdAngle
)
);
var
edge
=
[
0
,
0
],
hash
=
{};
var
sortFunction
=
function
(
a
,
b
)
{
return
a
-
b
};
var
keys
=
[
'
a
'
,
'
b
'
,
'
c
'
];
var
geometry2
;
if
(
geometry
instanceof
THREE
.
BufferGeometry
)
{
geometry2
=
new
THREE
.
Geometry
();
geometry2
.
fromBufferGeometry
(
geometry
);
}
else
{
geometry2
=
geometry
.
clone
();
}
geometry2
.
mergeVertices
();
geometry2
.
computeFaceNormals
();
var
vertices
=
geometry2
.
vertices
;
var
faces
=
geometry2
.
faces
;
var
numEdges
=
0
;
for
(
var
i
=
0
,
l
=
faces
.
length
;
i
<
l
;
i
++
)
{
var
face
=
faces
[
i
];
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
edge
[
0
]
=
face
[
keys
[
j
]
];
edge
[
1
]
=
face
[
keys
[
(
j
+
1
)
%
3
]
];
edge
.
sort
(
sortFunction
);
var
key
=
edge
.
toString
();
if
(
hash
[
key
]
===
undefined
)
{
hash
[
key
]
=
{
vert1
:
edge
[
0
],
vert2
:
edge
[
1
],
face1
:
i
,
face2
:
undefined
};
numEdges
++
;
}
else
{
hash
[
key
].
face2
=
i
;
}
}
}
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
var
index
=
0
;
for
(
var
key
in
hash
)
{
var
h
=
hash
[
key
];
if
(
h
.
face2
===
undefined
||
faces
[
h
.
face1
].
normal
.
dot
(
faces
[
h
.
face2
].
normal
)
<=
thresholdDot
)
{
var
vertex
=
vertices
[
h
.
vert1
];
coords
[
index
++
]
=
vertex
.
x
;
coords
[
index
++
]
=
vertex
.
y
;
coords
[
index
++
]
=
vertex
.
z
;
vertex
=
vertices
[
h
.
vert2
];
coords
[
index
++
]
=
vertex
.
x
;
coords
[
index
++
]
=
vertex
.
y
;
coords
[
index
++
]
=
vertex
.
z
;
}
}
this
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
};
THREE
.
EdgesGeometry
.
prototype
=
Object
.
create
(
THREE
.
BufferGeometry
.
prototype
);
THREE
.
EdgesGeometry
.
prototype
.
constructor
=
THREE
.
EdgesGeometry
;
src/extras/helpers/EdgesHelper.js
浏览文件 @
207457a5
...
...
@@ -11,90 +11,8 @@
THREE
.
EdgesHelper
=
function
(
object
,
hex
,
thresholdAngle
)
{
var
color
=
(
hex
!==
undefined
)
?
hex
:
0xffffff
;
thresholdAngle
=
(
thresholdAngle
!==
undefined
)
?
thresholdAngle
:
1
;
var
thresholdDot
=
Math
.
cos
(
THREE
.
Math
.
degToRad
(
thresholdAngle
)
);
var
edge
=
[
0
,
0
],
hash
=
{};
var
sortFunction
=
function
(
a
,
b
)
{
return
a
-
b
};
var
keys
=
[
'
a
'
,
'
b
'
,
'
c
'
];
var
geometry
=
new
THREE
.
BufferGeometry
();
var
geometry2
;
if
(
object
.
geometry
instanceof
THREE
.
BufferGeometry
)
{
geometry2
=
new
THREE
.
Geometry
();
geometry2
.
fromBufferGeometry
(
object
.
geometry
);
}
else
{
geometry2
=
object
.
geometry
.
clone
();
}
geometry2
.
mergeVertices
();
geometry2
.
computeFaceNormals
();
var
vertices
=
geometry2
.
vertices
;
var
faces
=
geometry2
.
faces
;
var
numEdges
=
0
;
for
(
var
i
=
0
,
l
=
faces
.
length
;
i
<
l
;
i
++
)
{
var
face
=
faces
[
i
];
for
(
var
j
=
0
;
j
<
3
;
j
++
)
{
edge
[
0
]
=
face
[
keys
[
j
]
];
edge
[
1
]
=
face
[
keys
[
(
j
+
1
)
%
3
]
];
edge
.
sort
(
sortFunction
);
var
key
=
edge
.
toString
();
if
(
hash
[
key
]
===
undefined
)
{
hash
[
key
]
=
{
vert1
:
edge
[
0
],
vert2
:
edge
[
1
],
face1
:
i
,
face2
:
undefined
};
numEdges
++
;
}
else
{
hash
[
key
].
face2
=
i
;
}
}
}
var
coords
=
new
Float32Array
(
numEdges
*
2
*
3
);
var
index
=
0
;
for
(
var
key
in
hash
)
{
var
h
=
hash
[
key
];
if
(
h
.
face2
===
undefined
||
faces
[
h
.
face1
].
normal
.
dot
(
faces
[
h
.
face2
].
normal
)
<=
thresholdDot
)
{
var
vertex
=
vertices
[
h
.
vert1
];
coords
[
index
++
]
=
vertex
.
x
;
coords
[
index
++
]
=
vertex
.
y
;
coords
[
index
++
]
=
vertex
.
z
;
vertex
=
vertices
[
h
.
vert2
];
coords
[
index
++
]
=
vertex
.
x
;
coords
[
index
++
]
=
vertex
.
y
;
coords
[
index
++
]
=
vertex
.
z
;
}
}
geometry
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
coords
,
3
)
);
THREE
.
Line
.
call
(
this
,
geometry
,
new
THREE
.
LineBasicMaterial
(
{
color
:
color
}
),
THREE
.
LinePieces
);
THREE
.
Line
.
call
(
this
,
new
THREE
.
EdgesGeometry
(
object
.
geometry
,
thresholdAngle
),
new
THREE
.
LineBasicMaterial
(
{
color
:
color
}
),
THREE
.
LinePieces
);
this
.
matrix
=
object
.
matrixWorld
;
this
.
matrixAutoUpdate
=
false
;
...
...
utils/build/includes/extras.json
浏览文件 @
207457a5
...
...
@@ -28,6 +28,7 @@
"src/extras/geometries/BoxGeometry.js"
,
"src/extras/geometries/CircleGeometry.js"
,
"src/extras/geometries/CylinderGeometry.js"
,
"src/extras/geometries/EdgesGeometry.js"
,
"src/extras/geometries/ExtrudeGeometry.js"
,
"src/extras/geometries/ShapeGeometry.js"
,
"src/extras/geometries/LatheGeometry.js"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录