2013年12月10日火曜日

[MayaLT]Sculptrisのデータをリトポジトリーしてみた

Sclptrisで岩を作成してMayaLTでリトポしてみました。

Sculptrisで作成します。

















エッジのたたせかたがうまくいかず、ぬるっとした感じになってしまいました。
約65000ポリゴンのモデルです。

岩のような形状ならSclptrisのReduceでもいい気がしますが
検証ということでModelingToolKitを試したみました。

モデルをインポートしてEditMesh>ShowModelingToolKitを表示します。
読み込んできたモデルをModifi>LiveModeでアクティブにします。
ModelingToolKitからQuadDrawを選択。
左クリックで頂点を作成。
シフトキーを押しながら左クリックをすると面ができます。

リトポしたモデルは1200ポリゴンになります。

















Turtleでノーマルマップを焼き付けて、カラーマップをはってシーンに配置してみました。
















Unityに出力してみます。
フリー版なのでライトマップを焼き付けるとノーマルマップが使えなくなります。
なのでDisplacementMapを若干いれてあります。
Mayaにみためをあわせたかったのですがリニアライティングが使えないので難しいですね。。。



2013年12月6日金曜日

[MayaLT]Turtle-その2 Turtleでレンダリング

MayaLTExtension2をインストールしてみました。
スクリプトエディターがMayaと同様のものになってました。
これでツールの開発のしやすくなりそうです。

Turtleですがレンダリングサイズは512x314の固定で変更はできないようです。
あくまでプレビュー用ということなのでしょうか。





















ほとんどデフォルトのパラメータでのレンダリングになります。
影とリフレクションがガビガビしてます。。。

もう少しうまくいったら、テクスチャーベイキングに挑戦したいと思います。

2013年12月5日木曜日

[MayaLT]MayaLT2014Extension2でMelがサポートされた

MayaLT2014Extension2でMelが正式にサポートされました。
12月4日から提供開始ということなので、すでに利用可能です。
http://3dnchu.com/archives/maya-lt-2014-extension-2/
http://area.autodesk.com/products/features/mayalt

ikHandleとpoleVectorコンストレインもサポートされるということなので
自前でikHandleを追加する必要はありません。
[MayaLT]IKHandleの不具合対応
MayaLTでもMelが使える-その2を準備していましたが必要なくなりました。

Objの出力もうれしいですね、Scluptrisへデータ持っていくとき
Blender経由でFBXからOBJ変換する必要がありそうでしたので。

そこで次に気になるのがpythonのサポートです。
次回のアップデートでサポートしていただきたいですね。

ちなみに現状のExtension1でもMelpythonコマンドでpythonは使えるようです。
Melコマンドからpythonの呼び出しができるか試してみました。

下記のコマンドをpyTest.melとして保存。
シーンにドラッグアンドドロップ。
python("import maya.cmds as cmd");
python("cmd.sphere()" );


2013年12月1日日曜日

[SubstanceDesigner]SubstanceDesiner4購入

SubstanceDesiner4がSteamで50%オフというので
この機会に非商用版を購入してみました。

Unity、UDKでも使用できるので、そのへんのパイプラインを
自分なりにまとめていけたらいいなぁと思ってます。

□Steam
http://store.steampowered.com/app/238710/

□公式サイト
http://www.allegorithmic.com/products/substance-designer


[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月27日水曜日

[MayaLT]IKHandleの不具合対応

MayaLTではjointをつくるさい、create ik Handleのオプションを有効にしてもIKは作成されませんでした。

検証した結果、ikHandleコマンドが無効になっているようです。

なのでikHandle作成に必要なノードをcreateNodeする必要があります。 必要なノードを作成して、ikHandleを作成するMelを作成してみました。

https://gist.github.com/hiko9lock/7660365

使い方はスタートジョイントとエンドジョイントを選択してから
シーンにhq_ikHandle.melをドラッグ&ドロップで実行してください。

シングルチェーンソルバのIKが作成されます。

2013年11月24日日曜日

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

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










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

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

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


[MayaLT]MayaLTでもMelが使える-その1

MayaLTの体験版を使用したときMelが使える方法があるのは
知っていましたが、おおやけには無理だと思ってました。

が、しかし
http://area.autodesk.jp/movie/maya-lt-2014-seminar/04.html

こちらでおおやけで使い方を説明されてます。

MelをシーンにドロップするとMelが実行されるのは初めて知りました。

□ソースしてMelを実行する
1.下記の内容でtest.melをデスクトップに作成します。
print "Excute mel!\n";

2.test.melをシーンにドラッグします。

3.ドロップするとMelが実行されます。










もうひとつの方法はmayaのスクリプトパスが通ったフォルダにMelを追加する方法です。
体験版のときはDocument内のフォルダにパスが通っていて楽だったのですがExtensionの
更新したら使えなくなってました。

2013年11月23日土曜日

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

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

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

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

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

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




2013年10月20日日曜日

[Blender]BlenderでUV編集

Blender2.67bでのUV展開のメモです。
オペレーションはMayaのプリセットを使っています。

□UVを移動するとき移動制限をかける
W(移動)キーを押してからMMBでドラッグ。

□UVの整列
UVを選択してctr+RMBでメニュー表示。
Align Autoで整列。
WeldでUVのマージ。


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年7月17日水曜日

[UDK]UDKのためのノーマルマップ作成まとめ

UDKで使うノーマルマップを作成するときの設定をまとめます。

今回作成するノーマルマップはMayaとUDKの座標系を考慮しての作成となります。

・Maya  右手系のYアップ
・UDK   左手系のZアップ

UDKのタンジェントスペースは左手系なのでシェイプノードのアトリビュートで左手系のタンジェントスペースに設定します。







ローモデルとハイモデルを作成してTransfarMapでノーマルマップを焼付けます。


































凸になったノーマルマップが生成されます。
このR、Gチャンネルの向きがUDKで正しいノーマルマップとなります。

□Nvidea normalMapFilterの設定

デフォルトの設定でOKです。
白の部分が凸、黒の部分が凹となります。











□xNormalの設定

Y軸をフリップする必要があります。
NormalMapのオプションを設定します。






いまさらですが、ノーマルマップはアウトプットするツールによって変わるので必ずチャンネルの向きを確認が必要です。

2013年5月12日日曜日

[glsl]OpenframeWorksでプロシージャルテクスチャー

OpenframeWorksを使ってプロシージャルテクスチャーの作成を試してみました。
フラグメントシェーダーを使ってプラズマという模様を極座標変換したものになります。

















github  - of0074 OSX
https://github.com/hiko9lock/ofxProceduralTexures

コードはGLSL SandBoxを参考にしています。バーテックスシェーダーは変更する必要はないのでフラグメントシェーダのみの変更で実行できると思います。


2013年5月3日金曜日

[GamePlay3d]v1.7にアップデート

GamePlay3dがv1.70にアップしました。
変更点など詳しいことは記載されている項目が見当たらないのであとで探してみます。

□GamePlay3d Github
https://github.com/blackberry/GamePlay

2013年4月23日火曜日

[アート]チュートリアルつきanatomy(人体)参考サイト

人体のスカルプトの参考のために見つけた、anatomy参考サイトをリンクしておきます。
anatomy参考サイトというよりは芸術コミュニティサイトですね。

deviantART
http://www.deviantart.com

pixivにも似てるのですが多国籍ということもあり規模が大きいです。
英語ですがチュートリアルを公開しているページなども、よくまとまっているので英語がわからくても大丈夫そうです。

2013年4月12日金曜日

[イベント]Autodesk UNFOLD 2014 ~M&E 2014

Autodesk製品の発表イベントUNFOLD 2014に行って来ました。
全プログラム受講しましたが、MayaユーザーということでMayaのみの記載とさせていだだきます。(SIは受講してませんでした。。。)

今回のアップデートの主な印象は、ツールまわりのユーザビリティの向上とシェーダーのリアルタイム性の向上が印象的でした。DX11シェーダーによるテッセレーション機能、ボーナスツールなどのサブツールがMayaにインテグレートされたりです。

◇モデリングツール
モデリングフローではマウスの操作だけでモデリングコンテキストにアクセスできたり、ポイントを定義して領域をドラッグするとポリゴンが生成されたり、より直感的に操作できるようになったのではないでしょうか。

◇シーンアセンブリツール
大規模なアセットを管理する仕組みとして、GPUでシーンキャッシュを利用した表示(Alembic)のコントロールが可能となりました。大規模なシーンを扱うときは不可欠な機能となりそうです。

◇グリースペンシル
ビューポートに直接描ける機能で、コンテレベルで使えそうです。


まだ試してないので、後ほど試してみたいと思います。



2013年4月10日水曜日

[iOS]フリーで使えるゲームエンジン

GamePlay3dを始めいくつかのゲームエンジンの状況について調べてました。
Unityの普及のせいか、ほとんどのゲームエンジンの開発がここ2年ぐらい滞っている感じがします。その中でもCocos3dは活動が盛んです。

cocos2d

公式サイト
http://www.cocos2d-iphone.org

cocos2d  https://github.com/cocos2d/cocos2d-iphone.git
cocos3d  https://github.com/cocos3d/cocos3d

proton sdk

Proton sdk wiki
http://www.rtsoft.com/wiki/doku.php?id=proton

Robinson Technologiesが開発しているBSDライセンスのゲームエンジンです。irrlichtを組み込んでいます。ネットワーク機能もあります。

oolong engine

oolongengin wiki
MITライセンスのエンジンです。ネットワークの機能も一通りついてます。

sio2 Engine

公式サイト
http://sio2interactive.com
フリーだと思ってのですがsio2は有償になってました。デベロッパー登録してみたら30日の体験版でビルドできるアプリの数に制限がついてました。開発は止まっているのでしょうか、最近更新がないようです。iOS4までの対応のようです。

2013年4月5日金曜日

[メディアアート]Perfume演出2012大晦日

2012の紅白でのPerfumeと嵐の演出についての記事があったのでリンクしておきます。

2012年大晦日、Perfume&嵐の舞台裏! -white -screen.jp

ライゾマティクスの真鍋氏の演出は、いつもどうやって作ってるのか気になってしまいます。3Dデータキャプチャに使われたKinectを使ったシステムはちょっと試してみたいですね。

2013年4月3日水曜日

[GamePlay3d]初音ミクをだしてみました

Unity3dの試用版のライセンスが切れたためiOSに出力できなくなってしまったので別のゲームエンジンを試してみました。

gameplay3d - free 3D game engine
http://gameplay3d.org

BlackBerryの開発元が公開しているオープンソースのゲームエンジンです。
COLLADA,FBXに対応していて、ファイルをエンコードしてからリソースに組み込む流れとなります。パーティクルはビルボードのみでディレクショナル、スプライトは対応してないようです。

iOS、MacOSXで試してみました。

gameplay.xcodeprojを開いて、libgameplay.aを作成します。
サンプルプロジェクトの場合libgameplay.aのパスが切れているので、作成したライブラリを追加します。あとMacOSXでは問題ないですが、iOSでビルドする際にlibz.dylibが見つからないためエラーになるのでlibz.dylibを削除してlibz.1.2.5.dylibを追加します。
















データはこちらから使用させていただいてます。
モデモデ - あるCGデザイナーの平凡な日常
※objのモデルをそのままだした状態なので、まだちゃんとでていません。。。

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月27日水曜日

[python]開放されているポートを調べる

以前RealFlowを使用したとき、レンダーノードに
接続できなかったため、ポートチェックのために
pythonを使用しました。
from socket import *
import sys
if len(sys.argv[1:]) == 2:
    ip = sys.argv[1]
    sport = int(sys.argv[2])
    eport = sport + 1
elif len(sys.argv[1:]) == 3:
    ip = sys.argv[1]
    sport = int(sys.argv[2])
    eport = int(sys.argv[3]) + 1
else:
    exit()
for port in range(sport, eport):
    try:
        s = socket(AF_INET, SOCK_STREAM,0)
        s.settimeout(1)
        s.connect((ip,port))
        print str(port) + ':OK'
        s.close()
    except error, msg:
        print str(port) + ':' + str(msg)
RealFlowのレンダーノードは2223から2226を使用するので
python portCheck.py 2223 2226
で使用します。

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月10日日曜日

Githubアカウント作成

Githubのアカウント作成しました。
URL https://github.com/hiko9lock

プログラマーではないのですがGithubにお世話になることが多々あるので 継続してチェックしているプロジェクトなど確認しやすくなりそうです。

 今はテストで作成したリポジトリしかありませんが、過去に作成したツールなども まとめていきたいと思います。

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
詳細はこちら。
内蔵プロファイラでのパフォーマンス測定

2013年1月11日金曜日

safari開発者メニュー


開発者メニューはChromeだけだと思っていましたがsafariにもついていました。
以下、Macの場合です。

  1. iPhoneとMacをつなぐ。
  2. iPhoneで[safari->詳細]を開き、[webインスペクタ]をONにする。
  3. macのsafariで[safari->環境設定]で設定メニューを開く。
  4. [詳細タブ]を開き、[メニューバーに"開発"メニューを表示]にチェックを入れる。

iOSで要素を確認できるのはすごく便利です。