ラベル unity の投稿を表示しています。 すべての投稿を表示
ラベル unity の投稿を表示しています。 すべての投稿を表示

2013年12月1日日曜日

[MayaLT]Turtle-その1 ノーマルマップの転写

MayaLTのTurtleを試しに使ってノーマルマップを焼き付けてみました。
Turtleはパラメータが多いので困っていまいますね。

まずソース用とターゲット用のモデルを用意します。











Turtleの設定をおこないます。
Window > Material/Texture Baking Editors > Texture Baking Settings
ウィンドウ > マテリアル/テクスチャのベイク処理エディタ > テクスチャのベイク処理設定
もしくはShadingカテゴリのTextureBaking>TurtleTextureBakingでもOKです。
















































はじめにTypeをBakeにしてBakingタブを選択します。
次にシーンからターゲット(ローモデル)を選択してTargetSurfaceにaddSelectで追加します。
SourceSurfaceも同様にソース(ハイモデル)を選択して追加します。

















TextureBakeSettingは解像度とファイルフォーマットの設定だけでいいとおもいます。
アウトプットされたデータは自動的にプロジェクトのTurtle内のフォルダに保存され
自動的にファイル名も設定してくれます。

ちなみにFileNameの文字列の値ですが
$p   出力する要素名(ノーマルとか)
$s   ターゲットシェイプ名
$e   拡張子
となっているようです。














ノーマルマップの出力ですのでNomalMapをチェックして有効にします。
CoodinateSystemはTangentSpaceに設定します。

あとは転写の実行です。
メイン メニュー >テクスチャのベイク処理 > ベイク処理
Texture Baking > Bake
TextureBakingViewのシェルフからBakeを選択してもOKです。



















下はUnityに読み込んだものになります。

2013年11月24日日曜日

[MayaLT]ShaderFXがUnityにエクスポートされるか試してみた

シンプルなShaderFXノードを作成してSendToUnityでUnityに転送してみました。










残念ながらShaderFXは転送できないようです。
FBXでエラーがでてしまい、Unity上ではデフォルトの
マテリアルが適用されてしまいます。

方法としてはHLSL、GLSLでエクスポートして
UnityのShaderLabで組み込むしかなさそうです。
あまりUnityに詳しくないので他に方法があるかもしれませんが、、、

HLSLなどに書き出すときファイルネームを指定するのですが
新規のFXファイルを作成するとDocument内のshaderフォルダに保存されて
しまう不具合があるようです。
指定したプロジェクト内にシェーダーコードを保存したい場合は
あらかじめ.FXファイルなどを作っておく必要があります。


2013年11月23日土曜日

[MayaLT]レンタルライセンス購入

MayaLTの体験版のライセンスが期限が切れたので3ヶ月の
レンタルライセンスを購入しました。

Extensionに更新してみましたが、ジョイント作成時CreateIKHandlのオプション
をチェックしてもIKHandleが作成されないバグは解消されてませんでした。
次の更新で解消されればよいのですが。

さて、新機能のほうですが、プラグインマネージャを開いてみると
GamePipeLine.mllのプラグインが追加されてました。

これでUnityに直接エクスポートできますね。

ShaderFXで作成したシェーダーがUnityでどう反映されるか
後ほど検証してみようと思います。




2013年8月16日金曜日

[Unity3d]mayaのカメラをunityにインポートするためのMel作成

UnityではMayaのカメラアトリビュートを読み込めないのでサポート用の
スクリプトを作成しました。

□参考
Mayaカメラ設定をUnityにインポートするTips
http://www.slideshare.net/nyaakobayashi/mayaunity

□スクリプト
hq_convertCameraAttribute.mel - gist
カメラ設定をロケータにコネクションするMelです。
ロケータは自動で生成されますので作成する必要はありません。
https://gist.github.com/hiko9lock/6249942
適宜の場所にインストールしてください。

  1. まず、カメラを作成してFitResolutionGate(解像度ゲートに適合)をvertical(垂直)に設定します。
  2. 作成したカメラを選択して、コマンド”hq_convertCameraAttribute”を実行します。カメラのアトリビュートがロケータにコネクションされます。
  3. カメラアニメーションを作成します。
  4. あとはロケータにキーをベイクしてロケータをFBXに書き出します。
カメラアトリビュートの関連付けですが資料と同じにしてあります。
ニアクリップ   →スケールX
ファークリップ →スケールY
FOV      →スケールZ

Maya側での作業のみとなりますので、Unityでのカメラデータインポートは資料を参考に試してみてください。




2013年3月4日月曜日

[Unity3d]iOS機種判定

Unity's ready for the iPad4 and new iPad Mini!
ここのサイトを参考にしました。
@"i386"      on the simulator
@"iPod1,1"   on iPod Touch
@"iPod2,1"   on iPod Touch Second Generation
@"iPod3,1"   on iPod Touch Third Generation
@"iPod4,1"   on iPod Touch Fourth Generation
@"iPhone1,1" on iPhone
@"iPhone1,2" on iPhone 3G
@"iPhone2,1" on iPhone 3GS
@"iPad1,1"   on iPad
@"iPad2,1"   on iPad 2
@"iPad3,1"   on iPad 3 (aka new iPad)
@"iPhone3,1" on iPhone 4
@"iPhone4,1" on iPhone 4S
@"iPhone5,1" on iPhone 5
@"iPhone5,2" on iPhone 5

 unity上では@が付いている文字列を使います。
if( iOSInfo.GetDeviceMode()== "iPhone5,1" || "iPhone5,2" ) {
   Debug.Log("It's iPhone5!");
}

2013年2月21日木曜日

[Unity3D]HingeJointを使った揺れモノ設定

キャラクタのヘアを揺らすための設定を
Hinge jointで考えてみました。











Hinge jointはグローバル座標でないとただしく動作しないので、
シーンに直接作成しています。
Sphereを作成してジョイントの代わりにPysicsコンポーネントを追加します。
Sphere1は物理の影響を受けさせたくないのでisKinematicをオンに
しておきます。

  • Sphere1にRigidBodyコンポーネントを追加
  • Sphere2,3,4にHinge jointを追加
  • Hinge joint>Connected Bodyに親のジョイントを設定
















次にCube1にHinge jointの親(Sphere1)にコンストレインさせるため
コンストレイン用のスクリプトを作成します。
using UnityEngine;
using System.Collections;

public class Constraint : MonoBehaviour {
	public Transform tr;
	private Quaternion rot;

	// Update is called once per frame
	void Update () {
		this.transform.position= tr.position;
		this.transform.rotation= Quaternion.Euler(	tr.eulerAngles.x,
													tr.eulerAngles.y,
													tr.eulerAngles.z );
	}
}
Sphere1にコンストレイントのコンポーネントを追加してターゲットに
Transform(Cube1)を設定します。

シーンを再生してCube1,Cube2を動かすと確認できます。

2013年2月15日金曜日

2013年2月12日火曜日

Unity 3Dのカメラを作成(win,mac)

Unity3Dのカメラスクリプトを作成しました。
マウスのみ対応で、pan,zoom,orbitが可能です。
https://gist.github.com/hiko9lock/4760161

使い方

  1. maimCameraにスクリプトをアタッチ
  2. targetに注視点用のgameObjectを設定
  • middleボタンでパン
  • LeftButtonでローテート
  • alt+RightButtonでズーム
transform.LookAtを使用しているため注視点用の
gameObjectを設定してください。

Unity3Dのassetのカメラスクリプトを拡張しようとしましたが
思ったとおりに制御できなかったので球座標系で位置を
計算しています。

2013年2月7日木曜日

unity iOSプロファイラー

iOSではUnityのプロファイラーが使えないのでxCodeで有効にして
xCodeのOutPutWindowにプロファイル情報を表示させる必要があります。

 #define ENABLE_INTERNAL_PROFILER 1
結果はこちら。
iPhone Unity internal profiler stats:
cpu-player>    min:  3.3   max:  4.0   avg:  3.5
cpu-ogles-drv> min:  3.2   max:  4.0   avg:  3.7
cpu-present>   min:  0.9   max:  4.1   avg:  1.4
frametime>     min: 29.8   max: 36.6   avg: 33.4
draw-call #>   min:  11    max:  11    avg:  11     | batched:     0
tris #>        min: 13510  max: 13510  avg: 13510   | batched:     0
verts #>       min: 13368  max: 13368  avg: 13368   | batched:     0
player-detail> physx:  0.4 animation:  0.1 culling  0.0 skinning:  1.1 batching:  0.0 render:  1.5 fixed-update-count: 1 .. 2
mono-scripts>  update:  0.2   fixedUpdate:  0.0 coroutines:  0.0 
mono-memory>   used heap: 253952 allocated heap: 262144  max number of collections: 0 collection total duration:  0.0
詳細はこちら。
内蔵プロファイラでのパフォーマンス測定