Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
aef20a9b
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,发现更多精彩内容 >>
提交
aef20a9b
编写于
7月 24, 2017
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WebGLRenderer: Moved morphtargets code to WebGLMorphtargets.
上级
93af1630
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
116 addition
and
95 deletion
+116
-95
src/renderers/WebGLRenderer.js
src/renderers/WebGLRenderer.js
+5
-95
src/renderers/webgl/WebGLMorphtargets.js
src/renderers/webgl/WebGLMorphtargets.js
+111
-0
未找到文件。
src/renderers/WebGLRenderer.js
浏览文件 @
aef20a9b
...
@@ -12,6 +12,7 @@ import { WebGLShadowMap } from './webgl/WebGLShadowMap';
...
@@ -12,6 +12,7 @@ import { WebGLShadowMap } from './webgl/WebGLShadowMap';
import
{
WebGLAttributes
}
from
'
./webgl/WebGLAttributes
'
;
import
{
WebGLAttributes
}
from
'
./webgl/WebGLAttributes
'
;
import
{
WebGLBackground
}
from
'
./webgl/WebGLBackground
'
;
import
{
WebGLBackground
}
from
'
./webgl/WebGLBackground
'
;
import
{
WebGLRenderLists
}
from
'
./webgl/WebGLRenderLists
'
;
import
{
WebGLRenderLists
}
from
'
./webgl/WebGLRenderLists
'
;
import
{
WebGLMorphtargets
}
from
'
./webgl/WebGLMorphtargets
'
;
import
{
WebGLIndexedBufferRenderer
}
from
'
./webgl/WebGLIndexedBufferRenderer
'
;
import
{
WebGLIndexedBufferRenderer
}
from
'
./webgl/WebGLIndexedBufferRenderer
'
;
import
{
WebGLBufferRenderer
}
from
'
./webgl/WebGLBufferRenderer
'
;
import
{
WebGLBufferRenderer
}
from
'
./webgl/WebGLBufferRenderer
'
;
import
{
WebGLGeometries
}
from
'
./webgl/WebGLGeometries
'
;
import
{
WebGLGeometries
}
from
'
./webgl/WebGLGeometries
'
;
...
@@ -60,8 +61,6 @@ function WebGLRenderer( parameters ) {
...
@@ -60,8 +61,6 @@ function WebGLRenderer( parameters ) {
var
currentRenderList
=
null
;
var
currentRenderList
=
null
;
var
morphInfluences
=
new
Float32Array
(
8
);
var
spritesArray
=
[];
var
spritesArray
=
[];
var
flaresArray
=
[];
var
flaresArray
=
[];
...
@@ -245,7 +244,7 @@ function WebGLRenderer( parameters ) {
...
@@ -245,7 +244,7 @@ function WebGLRenderer( parameters ) {
var
properties
,
textures
,
attributes
,
geometries
,
objects
,
lights
;
var
properties
,
textures
,
attributes
,
geometries
,
objects
,
lights
;
var
programCache
,
renderLists
;
var
programCache
,
renderLists
;
var
background
,
bufferRenderer
,
indexedBufferRenderer
;
var
background
,
morphtargets
,
bufferRenderer
,
indexedBufferRenderer
;
var
flareRenderer
,
spriteRenderer
;
var
flareRenderer
,
spriteRenderer
;
function
initGLContext
()
{
function
initGLContext
()
{
...
@@ -276,6 +275,7 @@ function WebGLRenderer( parameters ) {
...
@@ -276,6 +275,7 @@ function WebGLRenderer( parameters ) {
attributes
=
new
WebGLAttributes
(
_gl
);
attributes
=
new
WebGLAttributes
(
_gl
);
geometries
=
new
WebGLGeometries
(
_gl
,
attributes
,
_infoMemory
);
geometries
=
new
WebGLGeometries
(
_gl
,
attributes
,
_infoMemory
);
objects
=
new
WebGLObjects
(
geometries
,
_infoRender
);
objects
=
new
WebGLObjects
(
geometries
,
_infoRender
);
morphtargets
=
new
WebGLMorphtargets
(
_gl
);
programCache
=
new
WebGLPrograms
(
_this
,
extensions
,
capabilities
);
programCache
=
new
WebGLPrograms
(
_this
,
extensions
,
capabilities
);
lights
=
new
WebGLLights
();
lights
=
new
WebGLLights
();
renderLists
=
new
WebGLRenderLists
();
renderLists
=
new
WebGLRenderLists
();
...
@@ -657,14 +657,6 @@ function WebGLRenderer( parameters ) {
...
@@ -657,14 +657,6 @@ function WebGLRenderer( parameters ) {
};
};
var
influencesList
=
{};
function
absNumericalSort
(
a
,
b
)
{
return
Math
.
abs
(
b
[
1
]
)
-
Math
.
abs
(
a
[
1
]
);
}
this
.
renderBufferDirect
=
function
(
camera
,
fog
,
geometry
,
material
,
object
,
group
)
{
this
.
renderBufferDirect
=
function
(
camera
,
fog
,
geometry
,
material
,
object
,
group
)
{
state
.
setMaterial
(
material
);
state
.
setMaterial
(
material
);
...
@@ -681,91 +673,9 @@ function WebGLRenderer( parameters ) {
...
@@ -681,91 +673,9 @@ function WebGLRenderer( parameters ) {
}
}
// morph targets
if
(
object
.
morphTargetInfluences
)
{
var
objectInfluences
=
object
.
morphTargetInfluences
;
if
(
objectInfluences
!==
undefined
)
{
var
length
=
objectInfluences
.
length
;
var
influences
=
influencesList
[
geometry
.
id
];
if
(
influences
===
undefined
)
{
// initialise list
influences
=
[];
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
influences
[
i
]
=
[
i
,
0
];
}
influencesList
[
geometry
.
id
]
=
influences
;
}
var
morphTargets
=
material
.
morphTargets
&&
geometry
.
morphAttributes
.
position
;
var
morphNormals
=
material
.
morphNormals
&&
geometry
.
morphAttributes
.
normal
;
// Remove current morphAttributes
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
var
influence
=
influences
[
i
];
if
(
influence
[
1
]
!==
0
)
{
if
(
morphTargets
)
geometry
.
removeAttribute
(
'
morphTarget
'
+
i
);
if
(
morphNormals
)
geometry
.
removeAttribute
(
'
morphNormal
'
+
i
);
}
}
// Collect influences
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
var
influence
=
influences
[
i
];
influence
[
0
]
=
i
;
influence
[
1
]
=
objectInfluences
[
i
];
}
influences
.
sort
(
absNumericalSort
);
// Add morphAttributes
for
(
var
i
=
0
;
i
<
8
;
i
++
)
{
var
influence
=
influences
[
i
];
if
(
influence
)
{
var
index
=
influence
[
0
];
var
value
=
influence
[
1
];
if
(
value
)
{
if
(
morphTargets
)
geometry
.
addAttribute
(
'
morphTarget
'
+
i
,
morphTargets
[
index
]
);
if
(
morphNormals
)
geometry
.
addAttribute
(
'
morphNormal
'
+
i
,
morphNormals
[
index
]
);
morphInfluences
[
i
]
=
value
;
continue
;
}
}
morphInfluences
[
i
]
=
0
;
}
program
.
getUniforms
().
setValue
(
_gl
,
'
morphTargetInfluences
'
,
morphInfluences
);
morphtargets
.
update
(
object
,
geometry
,
material
,
program
);
updateBuffers
=
true
;
updateBuffers
=
true
;
...
...
src/renderers/webgl/WebGLMorphtargets.js
0 → 100644
浏览文件 @
aef20a9b
/**
* @author mrdoob / http://mrdoob.com/
*/
function
absNumericalSort
(
a
,
b
)
{
return
Math
.
abs
(
b
[
1
]
)
-
Math
.
abs
(
a
[
1
]
);
}
function
WebGLMorphtargets
(
gl
)
{
var
influencesList
=
{};
var
morphInfluences
=
new
Float32Array
(
8
);
function
update
(
object
,
geometry
,
material
,
program
)
{
var
objectInfluences
=
object
.
morphTargetInfluences
;
var
length
=
objectInfluences
.
length
;
var
influences
=
influencesList
[
geometry
.
id
];
if
(
influences
===
undefined
)
{
// initialise list
influences
=
[];
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
influences
[
i
]
=
[
i
,
0
];
}
influencesList
[
geometry
.
id
]
=
influences
;
}
var
morphTargets
=
material
.
morphTargets
&&
geometry
.
morphAttributes
.
position
;
var
morphNormals
=
material
.
morphNormals
&&
geometry
.
morphAttributes
.
normal
;
// Remove current morphAttributes
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
var
influence
=
influences
[
i
];
if
(
influence
[
1
]
!==
0
)
{
if
(
morphTargets
)
geometry
.
removeAttribute
(
'
morphTarget
'
+
i
);
if
(
morphNormals
)
geometry
.
removeAttribute
(
'
morphNormal
'
+
i
);
}
}
// Collect influences
for
(
var
i
=
0
;
i
<
length
;
i
++
)
{
var
influence
=
influences
[
i
];
influence
[
0
]
=
i
;
influence
[
1
]
=
objectInfluences
[
i
];
}
influences
.
sort
(
absNumericalSort
);
// Add morphAttributes
for
(
var
i
=
0
;
i
<
8
;
i
++
)
{
var
influence
=
influences
[
i
];
if
(
influence
)
{
var
index
=
influence
[
0
];
var
value
=
influence
[
1
];
if
(
value
)
{
if
(
morphTargets
)
geometry
.
addAttribute
(
'
morphTarget
'
+
i
,
morphTargets
[
index
]
);
if
(
morphNormals
)
geometry
.
addAttribute
(
'
morphNormal
'
+
i
,
morphNormals
[
index
]
);
morphInfluences
[
i
]
=
value
;
continue
;
}
}
morphInfluences
[
i
]
=
0
;
}
program
.
getUniforms
().
setValue
(
gl
,
'
morphTargetInfluences
'
,
morphInfluences
);
}
return
{
update
:
update
}
}
export
{
WebGLMorphtargets
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录