Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.0] VRM0.xのマテリアルの表情アニメーションに対応する #1020

Merged
merged 5 commits into from
Aug 17, 2022

Conversation

ke456-png
Copy link
Contributor

@ke456-png ke456-png commented Aug 8, 2022

Description

1.0でVRM0.xのモデルを読み込んだ際も表情アニメーションでマテリアルを変化できるように実装する.

TextureTransform.RotationはVRMの仕様として表情に紐づけることが出来ない。

vrm0.xのマテリアルアニメーションに対応するためにrenameMaterialPropertyを移動する。

使用すると考えられる場所はvrm0.xでのマテリアルアニメーションをバインドする箇所だけだと考えられる
読み込み時にVRM0.xの場合でもマテリアルを表情で変化させることが出来るようにする。

MaterialColor
- color
- emissionColor
- shadeColor
- rimColor
- outlineColor

TextureTransform
- scale
- offset

RotationはVRMの仕様として表情に紐づけることが出来ない。
Comment on lines 354 to 356
const expressionType = renameMaterialProperty(
materialValue.propertyName!,
) as VRMExpressionMaterialColorType;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これで正しいexpressionTypeが取れる確証はありますか?

targetValue: new THREE.Color(...materialValue.targetValue!.slice(0, 3)),
}),
);
} else {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここはelseで弾くよりかは、 _MainTex_ST と等価比較をしたくありませんか?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

および、ここがハズレた場合は、「このパラメータは対応してないよ」Warningを出すのが親切かなと思っています

Copy link
Contributor

@0b5vr 0b5vr Aug 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VRM0でMToonにアサインできるのはこれらですね。

image

Copy link
Contributor

@0b5vr 0b5vr Aug 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

color, emissionColor, shadeColor, rimColor, outlineColor
すべてお名前は揃っていそうですね。

ただ、以下のようなmapを用意してやったほうがより良さそうと思います (i.e. renameMaterialPropert を用いない):

{
  '_Color': 'color',
  '_ShadeColor': 'shadeColor',
  ...
}

VRM0のMaterialColorTypeの名前からVRM1用に変換するMapを追加する

'_Color': 'color'
- OutlineColorのアニメーション対応
- _propertyNameMapMapの名前修正
- shadeTextureのUVアニメーションの修正
Comment on lines 25 to +29
color: 'color',
emissionColor: 'emissive',
outlineColor: 'outlineFactor',
rimColor: 'rimFactor',
shadeColor: 'shadeFactor',
outlineColor: 'outlineColorFactor',
rimColor: 'parametricRimColorFactor',
shadeColor: 'shadeColorFactor',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

materialBindが対象とするMToonMaterialのプロパティがお名前がズレていたため、それの修正です

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

今回、こんな感じで4つほどお名前ステークホルダーがいたのですが:

ここのObjectは、このうちVRM1.0のmaterialBindの名前をthree-vrmのMToonMaterialのプロパティ名へマップするObjectです。

@ke456-png ke456-png marked this pull request as ready for review August 17, 2022 02:27
Comment on lines +468 to +473
vec2 shadeMultiplyTextureUv = ( shadeMultiplyTextureUvTransform * vec3( uv, 1 ) ).xy;
#if THREE_VRM_THREE_REVISION >= 137
material.shadeColor *= texture2D( shadeMultiplyTexture, uv ).rgb;
material.shadeColor *= texture2D( shadeMultiplyTexture, shadeMultiplyTextureUv ).rgb;
#else
// COMPAT: pre-r137
material.shadeColor *= shadeMultiplyTextureTexelToLinear( texture2D( shadeMultiplyTexture, uv ) ).rgb;
material.shadeColor *= shadeMultiplyTextureTexelToLinear( texture2D( shadeMultiplyTexture, shadeMultiplyTextureUv) ).rgb;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

もともと shadeMultiplyTextureUvTransform が全く機能していなかったので(今回の趣旨と関連はするが直交するバグ)、それの修正です。

Copy link
Contributor

@0b5vr 0b5vr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM。ありがとうございました。

@ke456-png ke456-png merged commit 56a1beb into 1.0 Aug 17, 2022
@ke456-png ke456-png deleted the material-binds-0.0 branch August 17, 2022 02:31
@0b5vr 0b5vr added this to the VRM 1.0 milestone Aug 17, 2022
@0b5vr 0b5vr added bug Something isn't working enhancement New feature or request VRM 1.0 labels Aug 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request VRM 1.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants