Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
575dbe85
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,发现更多精彩内容 >>
提交
575dbe85
编写于
7月 11, 2013
作者:
S
stephomi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support for ray-line picking with scale matrix + polish few stuffs.
上级
e646663c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
22 deletion
+37
-22
examples/webgl_interactive_lines.html
examples/webgl_interactive_lines.html
+15
-15
src/core/Raycaster.js
src/core/Raycaster.js
+22
-7
未找到文件。
examples/webgl_interactive_lines.html
浏览文件 @
575dbe85
...
...
@@ -40,7 +40,7 @@
info
.
style
.
top
=
'
10px
'
;
info
.
style
.
width
=
'
100%
'
;
info
.
style
.
textAlign
=
'
center
'
;
info
.
innerHTML
=
'
<a href="http://threejs.org" target="_blank">three.js</a> webgl - interactive
cub
es
'
;
info
.
innerHTML
=
'
<a href="http://threejs.org" target="_blank">three.js</a> webgl - interactive
lin
es
'
;
container
.
appendChild
(
info
);
camera
=
new
THREE
.
PerspectiveCamera
(
70
,
window
.
innerWidth
/
window
.
innerHeight
,
1
,
10000
);
...
...
@@ -62,28 +62,28 @@
var
geometry
=
new
THREE
.
Geometry
();
geometry
.
vertices
.
push
(
new
THREE
.
Vector3
(
0
,
0
,
0
)
);
geometry
.
vertices
.
push
(
new
THREE
.
Vector3
(
15
,
15
,
15
)
);
geometry
.
vertices
.
push
(
new
THREE
.
Vector3
(
15
,
0
,
0
)
);
geometry
.
vertices
.
push
(
new
THREE
.
Vector3
(
0
,
30
,
-
40
)
);
geometry
.
vertices
.
push
(
new
THREE
.
Vector3
(
-
15
,
-
15
,
-
30
)
);
parentTransform
=
new
THREE
.
Mesh
();
parentTransform
.
position
.
x
=
Math
.
random
()
*
200
-
40
0
;
parentTransform
.
position
.
y
=
Math
.
random
()
*
200
-
40
0
;
parentTransform
.
position
.
z
=
Math
.
random
()
*
200
-
40
0
;
parentTransform
.
position
.
x
=
Math
.
random
()
*
40
-
2
0
;
parentTransform
.
position
.
y
=
Math
.
random
()
*
40
-
2
0
;
parentTransform
.
position
.
z
=
Math
.
random
()
*
40
-
2
0
;
parentTransform
.
rotation
.
x
=
Math
.
random
()
*
2
*
Math
.
PI
;
parentTransform
.
rotation
.
y
=
Math
.
random
()
*
2
*
Math
.
PI
;
parentTransform
.
rotation
.
z
=
Math
.
random
()
*
2
*
Math
.
PI
;
//
parentTransform.scale.x = Math.random() + 0.5;
//
parentTransform.scale.y = Math.random() + 0.5;
//
parentTransform.scale.z = Math.random() + 0.5;
parentTransform
.
scale
.
x
=
Math
.
random
()
+
0.5
;
parentTransform
.
scale
.
y
=
Math
.
random
()
+
0.5
;
parentTransform
.
scale
.
z
=
Math
.
random
()
+
0.5
;
for
(
var
i
=
0
;
i
<
1
00
;
i
++
)
{
for
(
var
i
=
0
;
i
<
5
00
;
i
++
)
{
var
type
=
Math
.
random
()
>
0.5
?
THREE
.
LineStrip
:
THREE
.
LinePieces
;
var
object
=
new
THREE
.
Line
(
geometry
,
new
THREE
.
LineBasicMaterial
(
{
color
:
Math
.
random
()
*
0xffffff
,
linewidth
:
5
}
),
type
);
var
object
=
new
THREE
.
Line
(
geometry
,
new
THREE
.
LineBasicMaterial
(
{
color
:
Math
.
random
()
*
0xffffff
}
),
type
);
object
.
position
.
x
=
Math
.
random
()
*
800
-
400
;
object
.
position
.
y
=
Math
.
random
()
*
800
-
400
;
object
.
position
.
z
=
Math
.
random
()
*
800
-
400
;
...
...
@@ -92,9 +92,9 @@
object
.
rotation
.
y
=
Math
.
random
()
*
2
*
Math
.
PI
;
object
.
rotation
.
z
=
Math
.
random
()
*
2
*
Math
.
PI
;
//
object.scale.x = Math.random() + 0.5;
//
object.scale.y = Math.random() + 0.5;
//
object.scale.z = Math.random() + 0.5;
object
.
scale
.
x
=
Math
.
random
()
+
0.5
;
object
.
scale
.
y
=
Math
.
random
()
+
0.5
;
object
.
scale
.
z
=
Math
.
random
()
+
0.5
;
parentTransform
.
add
(
object
);
...
...
@@ -104,7 +104,7 @@
projector
=
new
THREE
.
Projector
();
raycaster
=
new
THREE
.
Raycaster
();
raycaster
.
linePrecision
=
5
;
raycaster
.
linePrecision
=
3
;
renderer
=
new
THREE
.
WebGLRenderer
();
renderer
.
sortObjects
=
false
;
...
...
src/core/Raycaster.js
浏览文件 @
575dbe85
...
...
@@ -288,19 +288,34 @@
inverseMatrix
.
getInverse
(
object
.
matrixWorld
);
localRay
.
copy
(
raycaster
.
ray
).
applyMatrix4
(
inverseMatrix
);
localRay
.
direction
.
normalize
();
// for scale matrix
var
vertices
=
object
.
geometry
.
vertices
;
var
nbVertices
=
vertices
.
length
;
var
interPoint
=
new
THREE
.
Vector3
();
var
interSegment
=
new
THREE
.
Vector3
();
var
interLine
=
new
THREE
.
Vector3
();
var
step
=
object
.
type
===
THREE
.
LineStrip
?
1
:
2
;
for
(
var
i
=
0
;
i
<
nbVertices
-
1
;
i
=
i
+
step
)
{
var
distTestSq
=
localRay
.
distanceSqAndPointToSegment
(
vertices
[
i
],
vertices
[
i
+
1
],
null
,
interPoint
);
if
(
distTestSq
<=
precisionSq
)
{
interPoint
.
applyMatrix4
(
object
.
matrixWorld
);
var
distance
=
raycaster
.
ray
.
origin
.
distanceTo
(
interPoint
);
if
(
raycaster
.
near
<=
distance
&&
distance
<=
raycaster
.
far
)
intersects
.
push
({
distance
:
distance
,
point
:
interPoint
.
clone
(),
object
:
object
});
localRay
.
distanceSqAndPointToSegment
(
vertices
[
i
],
vertices
[
i
+
1
],
interLine
,
interSegment
);
interSegment
.
applyMatrix4
(
object
.
matrixWorld
);
interLine
.
applyMatrix4
(
object
.
matrixWorld
);
if
(
interLine
.
distanceToSquared
(
interSegment
)
<=
precisionSq
)
{
var
distance
=
raycaster
.
ray
.
origin
.
distanceTo
(
interLine
);
if
(
raycaster
.
near
<=
distance
&&
distance
<=
raycaster
.
far
)
{
intersects
.
push
(
{
distance
:
distance
,
point
:
interSegment
.
clone
(),
face
:
null
,
faceIndex
:
null
,
object
:
object
}
);
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录