Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
a65dd861
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,发现更多精彩内容 >>
提交
a65dd861
编写于
5月 19, 2016
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Sprite: Removed geometry.
上级
309aa386
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
69 addition
and
41 deletion
+69
-41
examples/js/renderers/Projector.js
examples/js/renderers/Projector.js
+23
-15
src/math/Frustum.js
src/math/Frustum.js
+20
-3
src/objects/Sprite.js
src/objects/Sprite.js
+5
-19
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+21
-4
未找到文件。
examples/js/renderers/Projector.js
浏览文件 @
a65dd861
...
...
@@ -339,32 +339,40 @@ THREE.Projector = function () {
_renderData
.
objects
.
length
=
0
;
_renderData
.
lights
.
length
=
0
;
function
addObject
(
object
)
{
_object
=
getNextObjectInPool
();
_object
.
id
=
object
.
id
;
_object
.
object
=
object
;
_vector3
.
setFromMatrixPosition
(
object
.
matrixWorld
);
_vector3
.
applyProjection
(
_viewProjectionMatrix
);
_object
.
z
=
_vector3
.
z
;
_object
.
renderOrder
=
object
.
renderOrder
;
_renderData
.
objects
.
push
(
_object
);
}
scene
.
traverseVisible
(
function
(
object
)
{
if
(
object
instanceof
THREE
.
Light
)
{
_renderData
.
lights
.
push
(
object
);
}
else
if
(
object
instanceof
THREE
.
Mesh
||
object
instanceof
THREE
.
Line
||
object
instanceof
THREE
.
Sprite
)
{
var
material
=
object
.
material
;
if
(
material
.
visible
===
false
)
return
;
}
else
if
(
object
instanceof
THREE
.
Mesh
||
object
instanceof
THREE
.
Line
)
{
if
(
object
.
frustumCulled
===
false
||
_frustum
.
intersectsObject
(
object
)
===
true
)
{
if
(
object
.
material
.
visible
===
false
)
return
;
if
(
object
.
frustumCulled
===
true
&&
_frustum
.
intersectsObject
(
object
)
===
false
)
return
;
_object
=
getNextObjectInPool
();
_object
.
id
=
object
.
id
;
_object
.
object
=
object
;
addObject
(
object
);
_vector3
.
setFromMatrixPosition
(
object
.
matrixWorld
);
_vector3
.
applyProjection
(
_viewProjectionMatrix
);
_object
.
z
=
_vector3
.
z
;
_object
.
renderOrder
=
object
.
renderOrder
;
}
else
if
(
object
instanceof
THREE
.
Sprite
)
{
_renderData
.
objects
.
push
(
_object
);
if
(
object
.
material
.
visible
===
false
)
return
;
if
(
object
.
frustumCulled
===
true
&&
_frustum
.
intersectsSprite
(
object
)
===
false
)
return
;
}
addObject
(
object
);
}
...
...
src/math/Frustum.js
浏览文件 @
a65dd861
...
...
@@ -86,10 +86,27 @@ THREE.Frustum.prototype = {
var
geometry
=
object
.
geometry
;
if
(
geometry
.
boundingSphere
===
null
)
geometry
.
computeBoundingSphere
();
if
(
geometry
.
boundingSphere
===
null
)
geometry
.
computeBoundingSphere
();
sphere
.
copy
(
geometry
.
boundingSphere
);
sphere
.
applyMatrix4
(
object
.
matrixWorld
);
sphere
.
copy
(
geometry
.
boundingSphere
)
.
applyMatrix4
(
object
.
matrixWorld
);
return
this
.
intersectsSphere
(
sphere
);
};
}(),
intersectsSprite
:
function
()
{
var
sphere
=
new
THREE
.
Sphere
();
return
function
(
sprite
)
{
sphere
.
center
.
set
(
0
,
0
,
0
);
sphere
.
radius
=
0.7071067811865476
;
sphere
.
applyMatrix4
(
sprite
.
matrixWorld
);
return
this
.
intersectsSphere
(
sphere
);
...
...
src/objects/Sprite.js
浏览文件 @
a65dd861
...
...
@@ -3,29 +3,15 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE
.
Sprite
=
(
function
(
)
{
THREE
.
Sprite
=
function
(
material
)
{
var
indices
=
new
Uint16Array
(
[
0
,
1
,
2
,
0
,
2
,
3
]
);
var
vertices
=
new
Float32Array
(
[
-
0.5
,
-
0.5
,
0
,
0.5
,
-
0.5
,
0
,
0.5
,
0.5
,
0
,
-
0.5
,
0.5
,
0
]
);
var
uvs
=
new
Float32Array
(
[
0
,
0
,
1
,
0
,
1
,
1
,
0
,
1
]
);
THREE
.
Object3D
.
call
(
this
);
var
geometry
=
new
THREE
.
BufferGeometry
();
geometry
.
setIndex
(
new
THREE
.
BufferAttribute
(
indices
,
1
)
);
geometry
.
addAttribute
(
'
position
'
,
new
THREE
.
BufferAttribute
(
vertices
,
3
)
);
geometry
.
addAttribute
(
'
uv
'
,
new
THREE
.
BufferAttribute
(
uvs
,
2
)
);
this
.
type
=
'
Sprite
'
;
return
function
Sprite
(
material
)
{
this
.
material
=
(
material
!==
undefined
)
?
material
:
new
THREE
.
SpriteMaterial
();
THREE
.
Object3D
.
call
(
this
);
this
.
type
=
'
Sprite
'
;
this
.
geometry
=
geometry
;
this
.
material
=
(
material
!==
undefined
)
?
material
:
new
THREE
.
SpriteMaterial
();
};
}
)();
};
THREE
.
Sprite
.
prototype
=
Object
.
create
(
THREE
.
Object3D
.
prototype
);
THREE
.
Sprite
.
prototype
.
constructor
=
THREE
.
Sprite
;
...
...
src/renderers/WebGLRenderer.js
浏览文件 @
a65dd861
...
...
@@ -1356,6 +1356,8 @@ THREE.WebGLRenderer = function ( parameters ) {
}
// TODO Duplicated code (Frustum)
function
isObjectViewable
(
object
)
{
var
geometry
=
object
.
geometry
;
...
...
@@ -1363,9 +1365,24 @@ THREE.WebGLRenderer = function ( parameters ) {
if
(
geometry
.
boundingSphere
===
null
)
geometry
.
computeBoundingSphere
();
var
sphere
=
_sphere
.
copy
(
geometry
.
boundingSphere
).
applyMatrix4
(
object
.
matrixWorld
);
_sphere
.
copy
(
geometry
.
boundingSphere
).
applyMatrix4
(
object
.
matrixWorld
);
return
isSphereViewable
(
_sphere
);
}
function
isSpriteViewable
(
sprite
)
{
_sphere
.
center
.
set
(
0
,
0
,
0
);
_sphere
.
radius
=
0.7071067811865476
;
_sphere
.
applyMatrix4
(
sprite
.
matrixWorld
);
return
isSphereViewable
(
_sphere
);
}
function
isSphereViewable
(
sphere
)
{
if
(
!
_frustum
.
intersectsSphere
(
sphere
)
)
return
false
;
...
...
@@ -1402,7 +1419,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
else
if
(
object
instanceof
THREE
.
Sprite
)
{
if
(
object
.
frustumCulled
===
false
||
is
Object
Viewable
(
object
)
===
true
)
{
if
(
object
.
frustumCulled
===
false
||
is
Sprite
Viewable
(
object
)
===
true
)
{
sprites
.
push
(
object
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录