Upload
rarihoma
View
640
Download
2
Embed Size (px)
Citation preview
UE4 の『 Bone の回転バグ』を直してプルリク投げた話
らりほま2016/10/21 第 6 回 UE4 よちよち勉強会
2
Boneの回転バグとは?
3https://issues.unrealengine.com/issue/UE-15388
4
バグの概要
● FBX を
● Skeletal Mesh として Import する際に
● Scale を変更すると
● Persona で Bone を回したときに● 回転量がおかしくなる
5
バグの概要
● FBX を
6
バグの概要
● Skeletal Mesh として Import する際に
7
バグの概要
● Scale を変更すると
8
バグの概要
● Persona で Bone を回したときに
9
バグの概要
● 回転量がおかしくなる
10
バグの概要
● 回転量がおかしくなる
11
バグの概要
● Scale を増加させるほど回転量が減少する● ぶっちゃけそんなに困るバグではない
– Blueprint での回転処理は正常– 困るのはリターゲット基底ポーズ調整時のみ
● でも気になる– UE4.7 のときには既に存在
12
直そう!
13
エンジンのソースコードのどこで回転処理を行っている?
14
それっぽいところにブレークポイントを仕掛けて探そう!
15
エンジンデバッグの注意点
● ソリューション構成をDebug Editor にしてビルドする
16
エンジンデバッグの注意点
● ブレークポイントはプロジェクトのソリューションに置く( エンジンのソリューションではない )
17
エンジンデバッグの注意点
エンジン
プロジェクト ( ブレークポイントはこっちに置く )
( ここでエンジンの起動が終了 )
18
エンジンデバッグの注意点
● 参考: alwei さんのブログ記事– UE4 VisualStudio を使ってエンジンをデバッグする -
Let's Enjoy Unreal Enginehttp://unrealengine.hatenablog.com/entry/2014/08/22/215802
19
回転処理を行うコードを見つけた!
20
問題の回転処理
● Engine/Source/Editor/Persona/Private/EditModes/SkeletonSelectionEditMode.cpp
21
Scaleに応じて回転量が変化するというバグなので…
22
Scaleを考慮した計算になってしまっている部分を探そう!
23
問題の回転処理
● Engine/Source/Editor/Persona/Private/EditModes/SkeletonSelectionEditMode.cpp
24
問題の回転処理
● Engine\Source\Runtime\Core\Public\Math\TransformVectorized.h
25
Scaleを考慮しない計算にするには…
26
問題の回転処理
● Engine\Source\Runtime\Core\Public\Math\TransformVectorized.h– TransformVector 定義の下に
TransformVectorNoScale( Scale を考慮しない版 ) の定義が存在
27
TransformVector↓
TransformVectorNoScale
28
たった 7 文字 (“Noscale”)追加するだけで (たぶん) 解決!
ボキッ
29
pull request の流れ
● fork→clone→pull request 用 blanch 作成→ ( 修正 )→add→commit→push→pull request
30
取り込まれるといいな…ここまで書いておいて reject されたら恥ずかしい (*ノ▽ノ)