Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
6cd829fb
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,发现更多精彩内容 >>
未验证
提交
6cd829fb
编写于
4月 11, 2020
作者:
M
Mr.doob
提交者:
GitHub
4月 11, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19093 from crest01/dev
Bugfix at matrix calculation at FBX import
上级
11739d9f
801daed4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
42 addition
and
26 deletion
+42
-26
examples/js/loaders/FBXLoader.js
examples/js/loaders/FBXLoader.js
+21
-13
examples/jsm/loaders/FBXLoader.js
examples/jsm/loaders/FBXLoader.js
+21
-13
未找到文件。
examples/js/loaders/FBXLoader.js
浏览文件 @
6cd829fb
...
...
@@ -3986,43 +3986,51 @@ THREE.FBXLoader = ( function () {
// Global Shear*Scaling
var
lParentTM
=
new
THREE
.
Matrix4
();
var
lLSM
;
var
lParentGSM
;
var
lParentGRSM
;
var
lLSM
=
new
Matrix4
();
var
lParentGSM
=
new
Matrix4
();
var
lParentGRSM
=
new
Matrix4
();
var
lParentTM_inv
=
new
Matrix4
().
getInverse
(
lParentTM
);
lParentTM
.
copyPosition
(
lParentGX
);
lParentGRSM
=
lParentTM
.
getInverse
(
lParentTM
).
multiply
(
lParentGX
);
lParentGSM
=
lParentGRM
.
getInverse
(
lParentGRM
).
multiply
(
lParentGRSM
);
lParentGRSM
.
multiply
(
lParentTM_inv
).
multiply
(
lParentGX
);
var
lParentGRM_inv
=
new
Matrix4
().
getInverse
(
lParentGRM
);
lParentGSM
.
multiply
(
lParentGRM_inv
).
multiply
(
lParentGRSM
);
lLSM
=
lScalingM
;
var
lGlobalRS
;
var
lGlobalRS
=
new
Matrix4
()
;
if
(
inheritType
===
0
)
{
lGlobalRS
=
lParentGRM
.
multiply
(
lLRM
).
multiply
(
lParentGSM
).
multiply
(
lLSM
);
lGlobalRS
.
multiply
(
lParentGRM
)
.
multiply
(
lLRM
).
multiply
(
lParentGSM
).
multiply
(
lLSM
);
}
else
if
(
inheritType
===
1
)
{
lGlobalRS
=
lParentGRM
.
multiply
(
lParentGSM
).
multiply
(
lLRM
).
multiply
(
lLSM
);
lGlobalRS
.
multiply
(
lParentGRM
)
.
multiply
(
lParentGSM
).
multiply
(
lLRM
).
multiply
(
lLSM
);
}
else
{
var
lParentLSM
=
new
THREE
.
Matrix4
().
copy
(
lScalingM
);
var
lParentGSM_noLocal
=
lParentGSM
.
multiply
(
lParentLSM
.
getInverse
(
lParentLSM
)
);
var
lParentLSM_inv
=
new
Matrix4
().
getInverse
(
lParentLSM
);
var
lParentGSM_noLocal
=
new
Matrix4
().
multiply
(
lParentGSM
).
multiply
(
lParentLSM_inv
);
lGlobalRS
=
lParentGRM
.
multiply
(
lLRM
).
multiply
(
lParentGSM_noLocal
).
multiply
(
lLSM
);
lGlobalRS
.
multiply
(
lParentGRM
)
.
multiply
(
lLRM
).
multiply
(
lParentGSM_noLocal
).
multiply
(
lLSM
);
}
var
lRotationPivotM_inv
=
new
Matrix4
().
getInverse
(
lRotationPivotM
);
var
lScalingPivotM_inv
=
new
Matrix4
().
getInverse
(
lScalingPivotM
);
// Calculate the local transform matrix
var
lTransform
=
lTranslationM
.
multiply
(
lRotationOffsetM
).
multiply
(
lRotationPivotM
).
multiply
(
lPreRotationM
).
multiply
(
lRotationM
).
multiply
(
lPostRotationM
).
multiply
(
lRotationPivotM
.
getInverse
(
lRotationPivotM
)
).
multiply
(
lScalingOffsetM
).
multiply
(
lScalingPivotM
).
multiply
(
lScalingM
).
multiply
(
lScalingPivotM
.
getInverse
(
lScalingPivotM
)
);
var
lTransform
=
new
Matrix4
();
lTransform
.
multiply
(
lTranslationM
).
multiply
(
lRotationOffsetM
).
multiply
(
lRotationPivotM
).
multiply
(
lPreRotationM
).
multiply
(
lRotationM
).
multiply
(
lPostRotationM
).
multiply
(
lRotationPivotM_inv
).
multiply
(
lScalingOffsetM
).
multiply
(
lScalingPivotM
).
multiply
(
lScalingM
).
multiply
(
lScalingPivotM_inv
);
var
lLocalTWithAllPivotAndOffsetInfo
=
new
THREE
.
Matrix4
().
copyPosition
(
lTransform
);
var
lGlobalTranslation
=
lParentGX
.
multiply
(
lLocalTWithAllPivotAndOffsetInfo
);
var
lGlobalTranslation
=
new
Matrix4
().
multiply
(
lParentGX
)
.
multiply
(
lLocalTWithAllPivotAndOffsetInfo
);
lGlobalT
.
copyPosition
(
lGlobalTranslation
);
lTransform
=
lGlobalT
.
multiply
(
lGlobalRS
);
lTransform
=
new
Matrix4
().
multiply
(
lGlobalT
)
.
multiply
(
lGlobalRS
);
return
lTransform
;
...
...
examples/jsm/loaders/FBXLoader.js
浏览文件 @
6cd829fb
...
...
@@ -4033,43 +4033,51 @@ var FBXLoader = ( function () {
// Global Shear*Scaling
var
lParentTM
=
new
Matrix4
();
var
lLSM
;
var
lParentGSM
;
var
lParentGRSM
;
var
lLSM
=
new
Matrix4
();
var
lParentGSM
=
new
Matrix4
();
var
lParentGRSM
=
new
Matrix4
();
var
lParentTM_inv
=
new
Matrix4
().
getInverse
(
lParentTM
);
lParentTM
.
copyPosition
(
lParentGX
);
lParentGRSM
=
lParentTM
.
getInverse
(
lParentTM
).
multiply
(
lParentGX
);
lParentGSM
=
lParentGRM
.
getInverse
(
lParentGRM
).
multiply
(
lParentGRSM
);
lParentGRSM
.
multiply
(
lParentTM_inv
).
multiply
(
lParentGX
);
var
lParentGRM_inv
=
new
Matrix4
().
getInverse
(
lParentGRM
);
lParentGSM
.
multiply
(
lParentGRM_inv
).
multiply
(
lParentGRSM
);
lLSM
=
lScalingM
;
var
lGlobalRS
;
var
lGlobalRS
=
new
Matrix4
()
;
if
(
inheritType
===
0
)
{
lGlobalRS
=
lParentGRM
.
multiply
(
lLRM
).
multiply
(
lParentGSM
).
multiply
(
lLSM
);
lGlobalRS
.
multiply
(
lParentGRM
)
.
multiply
(
lLRM
).
multiply
(
lParentGSM
).
multiply
(
lLSM
);
}
else
if
(
inheritType
===
1
)
{
lGlobalRS
=
lParentGRM
.
multiply
(
lParentGSM
).
multiply
(
lLRM
).
multiply
(
lLSM
);
lGlobalRS
.
multiply
(
lParentGRM
)
.
multiply
(
lParentGSM
).
multiply
(
lLRM
).
multiply
(
lLSM
);
}
else
{
var
lParentLSM
=
new
Matrix4
().
copy
(
lScalingM
);
var
lParentGSM_noLocal
=
lParentGSM
.
multiply
(
lParentLSM
.
getInverse
(
lParentLSM
)
);
var
lParentLSM_inv
=
new
Matrix4
().
getInverse
(
lParentLSM
);
var
lParentGSM_noLocal
=
new
Matrix4
().
multiply
(
lParentGSM
).
multiply
(
lParentLSM_inv
);
lGlobalRS
=
lParentGRM
.
multiply
(
lLRM
).
multiply
(
lParentGSM_noLocal
).
multiply
(
lLSM
);
lGlobalRS
.
multiply
(
lParentGRM
)
.
multiply
(
lLRM
).
multiply
(
lParentGSM_noLocal
).
multiply
(
lLSM
);
}
var
lRotationPivotM_inv
=
new
Matrix4
().
getInverse
(
lRotationPivotM
);
var
lScalingPivotM_inv
=
new
Matrix4
().
getInverse
(
lScalingPivotM
);
// Calculate the local transform matrix
var
lTransform
=
lTranslationM
.
multiply
(
lRotationOffsetM
).
multiply
(
lRotationPivotM
).
multiply
(
lPreRotationM
).
multiply
(
lRotationM
).
multiply
(
lPostRotationM
).
multiply
(
lRotationPivotM
.
getInverse
(
lRotationPivotM
)
).
multiply
(
lScalingOffsetM
).
multiply
(
lScalingPivotM
).
multiply
(
lScalingM
).
multiply
(
lScalingPivotM
.
getInverse
(
lScalingPivotM
)
);
var
lTransform
=
new
Matrix4
();
lTransform
.
multiply
(
lTranslationM
).
multiply
(
lRotationOffsetM
).
multiply
(
lRotationPivotM
).
multiply
(
lPreRotationM
).
multiply
(
lRotationM
).
multiply
(
lPostRotationM
).
multiply
(
lRotationPivotM_inv
).
multiply
(
lScalingOffsetM
).
multiply
(
lScalingPivotM
).
multiply
(
lScalingM
).
multiply
(
lScalingPivotM_inv
);
var
lLocalTWithAllPivotAndOffsetInfo
=
new
Matrix4
().
copyPosition
(
lTransform
);
var
lGlobalTranslation
=
lParentGX
.
multiply
(
lLocalTWithAllPivotAndOffsetInfo
);
var
lGlobalTranslation
=
new
Matrix4
().
multiply
(
lParentGX
)
.
multiply
(
lLocalTWithAllPivotAndOffsetInfo
);
lGlobalT
.
copyPosition
(
lGlobalTranslation
);
lTransform
=
lGlobalT
.
multiply
(
lGlobalRS
);
lTransform
=
new
Matrix4
().
multiply
(
lGlobalT
)
.
multiply
(
lGlobalRS
);
return
lTransform
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录