Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
d4f73ae8
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,发现更多精彩内容 >>
提交
d4f73ae8
编写于
12月 02, 2014
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated builds.
上级
59ccf9b5
变更
4
展开全部
隐藏空白更改
内联
并排
Showing
4 changed file
with
255 addition
and
175 deletion
+255
-175
build/three.js
build/three.js
+104
-24
build/three.min.js
build/three.min.js
+119
-118
src/extras/audio/AudioListener.js
src/extras/audio/AudioListener.js
+1
-2
src/objects/Line.js
src/objects/Line.js
+31
-31
未找到文件。
build/three.js
浏览文件 @
d4f73ae8
...
...
@@ -7594,33 +7594,24 @@ THREE.Object3D.prototype = {
getObjectById: function ( id, recursive ) {
if ( this.id === id ) return this
;
return this.getObjectByProperty( 'id', id, recursive )
;
for ( var i = 0, l = this.children.length; i < l; i ++ ) {
var child = this.children[ i ];
var object = child.getObjectById( id, recursive );
if ( object !== undefined ) {
return object;
}
},
}
getObjectByName: function ( name, recursive ) {
return
undefined
;
return
this.getObjectByProperty( 'name', name, recursive )
;
},
getObjectBy
Name: function ( nam
e, recursive ) {
getObjectBy
Property: function ( name, valu
e, recursive ) {
if ( this
.name === nam
e ) return this;
if ( this
[ name ] === valu
e ) return this;
for ( var i = 0, l = this.children.length; i < l; i ++ ) {
var child = this.children[ i ];
var object = child.getObjectBy
Name( nam
e, recursive );
var object = child.getObjectBy
Property( name, valu
e, recursive );
if ( object !== undefined ) {
...
...
@@ -14757,17 +14748,105 @@ THREE.Line.prototype.raycast = ( function () {
inverseMatrix.getInverse( this.matrixWorld );
ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix );
/* if ( geometry instanceof THREE.BufferGeometry ) {
var vStart = new THREE.Vector3();
var vEnd = new THREE.Vector3();
var interSegment = new THREE.Vector3();
var interRay = new THREE.Vector3();
var step = this.mode === THREE.LineStrip ? 1 : 2;
if ( geometry instanceof THREE.BufferGeometry ) {
var attributes = geometry.attributes;
if ( attributes.index !== undefined ) {
var indices = attributes.index.array;
var positions = attributes.position.array;
var offsets = geometry.offsets;
if ( offsets.length === 0 ) {
offsets = [ { start: 0, count: indices.length, index: 0 } ];
}
for ( var oi = 0; oi < offsets.length; oi++){
var start = offsets[ oi ].start;
var count = offsets[ oi ].count;
var index = offsets[ oi ].index;
for ( var i = start; i < start + count - 1; i += step ) {
var a = index + indices[ i ];
var b = index + indices[ i + 1 ];
vStart.fromArray( positions, a * 3 );
vEnd.fromArray( positions, b * 3 );
var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );
} else */ if ( geometry instanceof THREE.Geometry ) {
if ( distSq > precisionSq ) continue;
var distance = ray.origin.distanceTo( interRay );
if ( distance < raycaster.near || distance > raycaster.far ) continue;
intersects.push( {
distance: distance,
// What do we want? intersection point on the ray or on the segment??
// point: raycaster.ray.at( distance ),
point: interSegment.clone().applyMatrix4( this.matrixWorld ),
face: null,
faceIndex: null,
object: this
} );
}
}
} else {
var positions = attributes.position.array;
for ( var i = 0; i < positions.length / 3 - 1; i += step ) {
vStart.fromArray( positions, 3 * i );
vEnd.fromArray( positions, 3 * i + 3 );
var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment );
if ( distSq > precisionSq ) continue;
var distance = ray.origin.distanceTo( interRay );
if ( distance < raycaster.near || distance > raycaster.far ) continue;
intersects.push( {
distance: distance,
// What do we want? intersection point on the ray or on the segment??
// point: raycaster.ray.at( distance ),
point: interSegment.clone().applyMatrix4( this.matrixWorld ),
face: null,
faceIndex: null,
object: this
} );
}
}
} else if ( geometry instanceof THREE.Geometry ) {
var vertices = geometry.vertices;
var nbVertices = vertices.length;
var interSegment = new THREE.Vector3();
var interRay = new THREE.Vector3();
var step = this.mode === THREE.LineStrip ? 1 : 2;
for ( var i = 0; i < nbVertices - 1; i
= i +
step ) {
for ( var i = 0; i < nbVertices - 1; i
+=
step ) {
var distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );
...
...
@@ -27132,14 +27211,15 @@ THREE.AudioListener.prototype.updateMatrixWorld = ( function () {
THREE.Object3D.prototype.updateMatrixWorld.call( this, force );
var listener = this.context.listener;
var up = this.up;
this.matrixWorld.decompose( position, quaternion, scale );
orientation.set( 0, 0, -1 ).applyQuaternion( quaternion );
velocity.subVectors( position, positionPrev );
listener.setPosition( position.x, position.y, position.z );
listener.setOrientation( orientation.x, orientation.y, orientation.z,
this.up.x, this.up.y, this.
up.z );
listener.setOrientation( orientation.x, orientation.y, orientation.z,
up.x, up.y,
up.z );
listener.setVelocity( velocity.x, velocity.y, velocity.z );
positionPrev.copy( position );
...
...
build/three.min.js
浏览文件 @
d4f73ae8
此差异已折叠。
点击以展开。
src/extras/audio/AudioListener.js
浏览文件 @
d4f73ae8
...
...
@@ -21,8 +21,6 @@ THREE.AudioListener.prototype.updateMatrixWorld = ( function () {
var
quaternion
=
new
THREE
.
Quaternion
();
var
scale
=
new
THREE
.
Vector3
();
var
up
=
this
.
up
;
var
orientation
=
new
THREE
.
Vector3
();
var
velocity
=
new
THREE
.
Vector3
();
...
...
@@ -33,6 +31,7 @@ THREE.AudioListener.prototype.updateMatrixWorld = ( function () {
THREE
.
Object3D
.
prototype
.
updateMatrixWorld
.
call
(
this
,
force
);
var
listener
=
this
.
context
.
listener
;
var
up
=
this
.
up
;
this
.
matrixWorld
.
decompose
(
position
,
quaternion
,
scale
);
...
...
src/objects/Line.js
浏览文件 @
d4f73ae8
...
...
@@ -49,7 +49,7 @@ THREE.Line.prototype.raycast = ( function () {
inverseMatrix
.
getInverse
(
this
.
matrixWorld
);
ray
.
copy
(
raycaster
.
ray
).
applyMatrix4
(
inverseMatrix
);
var
vStart
=
new
THREE
.
Vector3
();
var
vEnd
=
new
THREE
.
Vector3
();
var
interSegment
=
new
THREE
.
Vector3
();
...
...
@@ -57,43 +57,43 @@ THREE.Line.prototype.raycast = ( function () {
var
step
=
this
.
mode
===
THREE
.
LineStrip
?
1
:
2
;
if
(
geometry
instanceof
THREE
.
BufferGeometry
)
{
var
attributes
=
geometry
.
attributes
;
if
(
attributes
.
index
!==
undefined
)
{
if
(
attributes
.
index
!==
undefined
)
{
var
indices
=
attributes
.
index
.
array
;
var
positions
=
attributes
.
position
.
array
;
var
offsets
=
geometry
.
offsets
;
if
(
offsets
.
length
===
0
)
{
offsets
=
[
{
start
:
0
,
count
:
indices
.
length
,
index
:
0
}
];
}
for
(
var
oi
=
0
;
oi
<
offsets
.
length
;
oi
++
){
var
start
=
offsets
[
oi
].
start
;
var
count
=
offsets
[
oi
].
count
;
var
index
=
offsets
[
oi
].
index
;
var
index
=
offsets
[
oi
].
index
;
for
(
var
i
=
start
;
i
<
start
+
count
-
1
;
i
+=
step
)
{
var
a
=
index
+
indices
[
i
];
var
b
=
index
+
indices
[
i
+
1
];
vStart
.
fromArray
(
positions
,
a
*
3
);
vEnd
.
fromArray
(
positions
,
b
*
3
);
var
distSq
=
ray
.
distanceSqToSegment
(
vStart
,
vEnd
,
interRay
,
interSegment
);
if
(
distSq
>
precisionSq
)
continue
;
var
distance
=
ray
.
origin
.
distanceTo
(
interRay
);
if
(
distance
<
raycaster
.
near
||
distance
>
raycaster
.
far
)
continue
;
intersects
.
push
(
{
distance
:
distance
,
...
...
@@ -105,28 +105,28 @@ THREE.Line.prototype.raycast = ( function () {
object
:
this
}
);
}
}
}
else
{
var
positions
=
attributes
.
position
.
array
;
for
(
var
i
=
0
;
i
<
positions
.
length
/
3
-
1
;
i
+=
step
)
{
for
(
var
i
=
0
;
i
<
positions
.
length
/
3
-
1
;
i
+=
step
)
{
vStart
.
fromArray
(
positions
,
3
*
i
);
vEnd
.
fromArray
(
positions
,
3
*
i
+
3
);
var
distSq
=
ray
.
distanceSqToSegment
(
vStart
,
vEnd
,
interRay
,
interSegment
);
if
(
distSq
>
precisionSq
)
continue
;
var
distance
=
ray
.
origin
.
distanceTo
(
interRay
);
if
(
distance
<
raycaster
.
near
||
distance
>
raycaster
.
far
)
continue
;
intersects
.
push
(
{
distance
:
distance
,
...
...
@@ -138,9 +138,9 @@ THREE.Line.prototype.raycast = ( function () {
object
:
this
}
);
}
}
}
else
if
(
geometry
instanceof
THREE
.
Geometry
)
{
...
...
@@ -148,7 +148,7 @@ THREE.Line.prototype.raycast = ( function () {
var
vertices
=
geometry
.
vertices
;
var
nbVertices
=
vertices
.
length
;
for
(
var
i
=
0
;
i
<
nbVertices
-
1
;
i
=
i
+
step
)
{
for
(
var
i
=
0
;
i
<
nbVertices
-
1
;
i
+=
step
)
{
var
distSq
=
ray
.
distanceSqToSegment
(
vertices
[
i
],
vertices
[
i
+
1
],
interRay
,
interSegment
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录