2016年9月11日日曜日

Houdiniプロシージャルモデリングテクニカルセミナー 2016/8/27

ゲーム関係

●FX
Texture sheetをつかって出す

●煙からMeshを作って、Normalを出す

●Joint animation、Texture based animation
・TextureにTranslate等の情報をBakeする
・Translate(R,G,B)→Texture(R,G,B)

●列がFrame、行がValue

Substance Designer + Houdini

●Houdini用Substanceプラグイン

●Houdini上でパラメーターを調整できる

●Custom Attributeでパラメーター欄を作れる

●Houdini上でパラメーターをいじると、Textureが再生成される

●Unityにデジタルアセットとして読み込み可能

?Hight map、Roughness map
・http://docs.unity3d.com/jp/current/Manual/StandardShaderMaterialParameterHeightMap.html
・http://www.cgradproject.com/archives/3153


トランジスタスタジオ

●Resumple Node

●Normal Node

●UP vectorとNrmalがあると配置しやすい

●ループ、再帰で木や雷を作る


菊池さん

●Outputを2つにする

●HDA
Houdini Digital Asset

●原点にPoint、発生源にPointを作って、雷を走らせる

●HDAを作る時は、Scalableに作ることが大事
・Scalable→Sourceが複数あっても成り立つ


座談会

●Houdiniに限らず、どんなソフトでもUnit scaleは変えない!

●Houdiniはデータ量に気をつけた方がいい

Nuekセミナーまとめ 2016/8/6

キーイング

・参考
http://cgworld.jp/regular/nuke010.html

●IBK
・Image based keying
http://help.thefoundry.co.uk/nuke/8.0/content/getting_started/tutorial3/image_based_keying.html

・https://compositingmentor.com/2014/07/19/advanced-keying-breakdown-alpha-1-4-ibk-stacked-technique/

●Conpositiong Mentor
https://compositingmentor.com/2014/07/19/advanced-keying-breakdown-alpha-1-4-ibk-stacked-technique/

●A、Bの2点で値を評価するツール
自作らしい。
どういうものだったか忘れてしまった・・・

●dispill、kyelightを使う

●light wrapをとる
髪の毛用、エッジ部分の調整

●logkeyer

●Roto animationをつける時は、copyでoriginalを引っ張ってくる
軽くていいらしい


インテグレーション(なじませ)

●Base compを作っておくといいみたい

●Light wrap、Edge、色収差など

●マイナス値があるとCompしにくい

●Grainがある状態でBlackをとらないと合わない

●Expression NodeでR、G、B合わせたアルファを作る

●Normal passとRelight Nodeを使って、アルファをとる


SQEX Kings graveメイキング

●BBC
色域 D65

●AOV
Arbitrary Output Variables
レンダーパスのこと

http://takumikim.blogspot.jp/2014/01/blog-post.html


座談会

●簡易的なHDR
・Theta s
http://www.ricoh-imaging.co.jp/japan/products/theta_s/

●チェックは「RV」か「Hiero」

●露出アンダーにしても、画がなりたつかチェック

2016年3月22日火曜日

フレーム移動スクリプト

アニメーション作業中にフレームの計算が面倒なので、スクリプト化しました。



●add frame
入力した数字分だけ、フレームがプラス方向に移動します。

●minus frame
入力した数字分だけ、フレームがマイナス方向に移動します。

●start frame
中間フレームを求めるための、始めのフレームをセットします。

●end frame
中間フレームを求めるための、終わりのフレームをセットします。

●intermidiate frame
start frame、end frameで入力されたフレームの中間フレームに移動します。
フレーム間が奇数だった場合は、小数点切り捨ての値になります。
例)start frame「10f」、end frame「19f」の場合、「14f」に移動します。


●スクリプト(Python)
################################################################
#
#    [name]Set various frame
#    [function]add frame, minus frame, culculate intermidiate frame
#    [note]if result value is odd, result value round down.
#
#    [author]Kyohei Ueno(heikyonoeu.blogspot.jp)
#
################################################################

import maya.cmds as mc

###set current frame in start frame###
def setStaFCurFrame():
    curF = mc.currentTime(q=1)
    mc.textFieldButtonGrp('staF_fld',edit=1,tx=curF)

###set current frame in end frame###
def setEndFCurFrame():
    curF = mc.currentTime(q=1)
    mc.textFieldButtonGrp('endF_fld',edit=1,tx=curF)

###set intermidiate frame###
def setIntermidiateFrame():
    staF = float(mc.textFieldButtonGrp('staF_fld',q=1,tx=1))
    endF = float(mc.textFieldButtonGrp('endF_fld',q=1,tx=1))
    intmF = int((endF - staF) / 2)
    intmF_result = int(staF + intmF)
    mc.textFieldButtonGrp('intm_fld',edit=1,tx=intmF_result)
    mc.currentTime(intmF_result)

###add frame###
def addFrame():
    a = float(mc.currentTime(q=1))
    b = float(mc.textFieldButtonGrp('addFrame',q=1,tx=1))
    c = a + b
    mc.currentTime(c)

###minus frame###
def minusFrame():
    a = float(mc.currentTime(q=1))
    b = float(mc.textFieldButtonGrp('minusFrame',q=1,tx=1))
    c = a - b
    mc.currentTime(c)

###window###
if mc.window('setVariousFrame',ex=1):
    mc.deleteUI('setVariousFrame')
 
mc.window('setVariousFrame',t='Set various frame',s=0)
mc.columnLayout()
mc.rowLayout(nc=2)
mc.textFieldButtonGrp('addFrame',l='add frame',bl='set',tx=0,cw3=(60,50,30),bc=addFrame)
mc.textFieldButtonGrp('minusFrame',l='minus frame',bl='set',tx=0,cw3=(60,50,30),bc=minusFrame)

mc.setParent('..')
mc.rowLayout(nc=3)
mc.textFieldButtonGrp('staF_fld',l='start frame',bl='set',cw3=(60,50,30),bc=setStaFCurFrame)
mc.textFieldButtonGrp('endF_fld',l='end frame',bl='set',cw3=(60,50,30),bc=setEndFCurFrame)
mc.textFieldButtonGrp('intm_fld',l='intermidiate frame',bl='set',cw3=(95,50,30),bgc=(1,0.443,0),bc=setIntermidiateFrame)

mc.showWindow()