fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

2013年12月 | ARCHIVE-SELECT | 2014年02月

| PAGE-SELECT |

≫ EDIT

ブレンドシェイプ

Unity でブレンドシェイプ(Blend Shape)を扱うためのものです。
とりあえず、FBX の中にブレンドシェイプのデータがはいっていること前提で話を進めます。

Blender などであればここを参考にしました。

[Tutorial] Unity Facial Animation / Blendshape / Morph
http://laboratoriesx86.wordpress.com/2013/12/09/facial-animation-unitytutorial/

ブレンドシェイプのデータは該当するオブジェクトの SkinnedMeshRenderer が持っています。
SkinnedMeshRenderer を使ってのブレンド率(重み)の取得と設定は以下の感じになります。

// ブレンドシェイプを持つオブジェクトの SkinnedMeshRenderer を取得
GameObject object = GameObject.Find("ObjectName");
SkinnedMeshRenderer renderer = object.GetComponent< SkinnedMeshRenderer>();

// ブレンドシェイプの数(ターゲットの数)は sharedMesh.blendShapeCount に入っています。
for( int i = 0; i < renderer.sharedMesh.blendShapeCount; i++ ){

// 重みの取得と設定
float weight = renderer.GetBlendShapeWeight(i);
renderer.SetBlendShapeWeight(i,weight);
}


と、こんな感じでプログラムからブレンドシェイプの重みを設定することができます。

これで表情などのセットができるようになりました。こんな感じに。
ブレンドシェイプ

| Unity | 23:30 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

他のスクリプトの class を参照する

特定のスクリプトから他のスクリプトの関数などにアクセスする方法です。

とりあえず以下のようなクラスがあったとします。

public class TestClass : MonoBehaviour {
// なにかいろいろ
public void CallFunction()
{
// 何か処理
}
}


このクラスに他のクラスからアクセスするにはこんな感じに。

public class AcsessClass : MonoBehaviour {
// なにかいろいろ
public void Update ()
{
// 自身のくっついているゲームオブジェクトのスクリプトを取得
// 同じゲームオブジェクトにくっついていると仮定
TestClass classTest = this.gameObject.GetComponent< TestClass>();

// そのクラスへのアクセス
classTest.CallFunction();
}
}



と、こんな感じでアクセスできるみたいです。
ゲームオブジェクトの「GetComponent」でそのクラスを取得してアクセスという感じですね。

| Unity | 01:24 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT |