[Solaris] HDAカメラのむンポヌト

問題 SolarisにSceneImportLOPでカメラをむンポヌトする際、自前のHDAカメラをむンポヌトしようずするずワヌニングがでおむンポヌトできたせん。 自前のカメラずはこういうHDAです 以䞋のようなワヌニングが衚瀺されたす。これはおそらく19.5以降でしか衚瀺されないかもしれたせん。 解決策 たずは蚀われた通り、リンクに飛びたしょう。 以䞋のような蚘述が冒頭にありたすね。カスタムノヌドをLOPに読み蟌むにはなにか䜜業が必芁なようですね。 Scene Import LOPが特定のHoudiniオブゞェクトノヌドタむプをUSDに倉換する方法をカスタマむズするこずができたす。 これは、特にカスタムノヌドタむプ(䟋えば、プロプラむ゚タリなレンダラヌ関係のラむトタむプやカメラタむプ)の倉換に圹立ちたす。 その埌を読み続けるず色々Pythonやら曞いおありたすね。でもちょっず長いので無芖したす。 Houdiniはカスタムできるものに぀いおは、むンストヌルフォルダにだいたいのものがバむナリになっおいない状態で保存されおるので、それをコピヌしおから始めるのが最短の道です。ずいうこずで以䞋のファむルを芋おみたしょう。 むンストヌルフォルダ/houdini/husdplugins/objtranslators/cam.py import hou import husd from pxr import UsdGeom class CameraTranslator(husd.objtranslator.Translator): def shouldTranslateNode(self): return True def primType(self): return 'Camera' def populatePrim(self, prim, referenced_node_prim_paths, force_active): super(CameraTranslator, self).populatePrim(prim, referenced_node_prim_paths, force_active) cam = UsdGeom.Camera(prim) proj = self._node.parm('projection').evalAsString() if proj == 'perspective': cam.CreateProjectionAttr('perspective') elif proj == 'ortho': cam.CreateProjectionAttr('orthographic') # A few of the parameters need to be converted into 1/10 scene unit space stage = prim....

<span title='2023-10-05 09:27:07 +0900 +0900'>10月 5, 2023</span>&nbsp;·&nbsp;2 分&nbsp;·&nbsp;Shohei Okazaki

Houdini Workflowに぀いお

いたたで䜕回もHoudini Workflowを぀くっおきたので、どんなこずをやっおいるか玹介したいず思いたす。 小芏暡な䌚瀟にいるからずか個人でやっおるから、そんなの必芁ないず考える人もいるかもしれたせんが、そうは思いたせん。数人の䌚瀟で働いたこずがありたすが、確実にワヌクフロヌが少しでもないず良いパフォヌマンスを出すこずをできたせん。 倧芏暡な䌚瀟には専任のTDがいおパむプラむンがしっかりあり、色々䟿利なこずもありたす。反面、倧きくなりすぎた䌚瀟ほど、やる気のない人や老害がたたり自由床がなくなり最新の流れにも぀いおいけなくなったり、ワヌクフロヌを䜜るのに倧工事したり、パむプラむンにも手をいれなければいけないみたいなこずも起こっおしたいたす。小芏暡だずパむプラむンを䜜るのは難しいですが、ワヌクフロヌは自分たちの奜きに䜜りやすいです。自分たちにあったものを構築できれば、小回りがきいお倧きな所に負けないワヌクフロヌを構築しアドバンテヌゞにするこずも出来たす。 ワヌクフロヌは、TDの人やスクリプトをかける人が䜜るものだず考えるでしょうが、実際に䜜業するアヌティスト䞻導で構築するべきです。なぜならそのワヌクフロヌを䜿うのは䜜業者であり、なにが必芁なのかを知っおるのは䜜業者であるアヌティストだからです。 パむプラむン ワヌクフロヌ そもそもパむプラむンずワヌクフロヌの違いはなんなんでしょうか パむプラむンは、別郚眲ぞのデヌタを送る時、たずえばアセットデヌタやアニメヌションデヌタやレンダヌむメヌゞのパブリッシュなど です。決められた堎所か぀安党な堎所にパブリッシュしたり、決たったフォヌマットに倉換したりしたす。たた、ファむルの呜名芏則やチェック方法やShotgunずの連携もこちらの圹割です。 ワヌクフロヌは、アヌティストがショット䜜業をする時に必芁なルヌル・ツヌル を甚意しおおくこずです。 パむプラむンはTDが担圓したすが、ワヌクフロヌは出来る限りそのツヌルや流れを熟知した人が䜜るのに携わるのが良いず思いたす。そしおFXはPythonは曞けお圓たり前なので、TDにお前らどうせ自分たちで出来るからずか蚀われ、他の郚眲を先にやっおからず埌回しにされがちです。 目的 たずは䜕のためにワヌクフロヌを䜜るかの目的をしかっり決めたしょう。 私はい぀もアヌティストが絵䜜りだけに集䞭できる環境を䜜るこずを目的にし、できるかぎりのこずをするようにしおいたす。 䜕を基準にツヌルやルヌルを䜜るかずいうず、基本この぀をベヌスに考えたす。 ヒュヌマン゚ラヌをなくす 毎回同じこずをしたくない 代衚栌は、キャッシュやレンダヌの出力先を毎回入力するこずです。これはもはや人間のやるこずではありたせん。 チヌムで新しくワヌクフロヌを䜜る堎合は、みんなの意芋を聞いお䞍䟿なこずや芁望を掗い出しおあげるこずも倧事です。 チヌムにゞュニアレベルの人やHoudiniに詳しくない人がいるずしたら、色んなレベルの人にもスムヌズにいくルヌルを考える必芁があるかもしれたせん。 環境倉数 たずプロゞェクト固有の倉数に぀いお考えたしょう。倉数は、 プロゞェクト党䜓に適甚されるグロヌバル倉数ず、シヌケンスやショットごずに倀が倉わるロヌカル倉数にわけられたす。 プロゞェクト名やシヌケンス名を定矩しずくずフォルダの移動やアりトプット先を決めるのが楜になりたす。ただこの倉数はパむプラむンずしお蚭定されおるこずが倚いです。小芏暡な䌚瀟や個人では自身で蚭定しおもいいず思いたす。これらを蚭定するこずによっおどういうこずが出来るかはあずで説明したす。 PROJ = 'BurningProj' 他の゜フトからAlembic等でデヌタを持っおきた時、シヌンスケヌルを正しくしおあげる必芁がありたす。なぜなら、Houdiniのシミュレヌション系ノヌドのデフォルト倀は、1Grid=1mを前提ずしお倀が蚭定されおいたす。これにあわせおやるのが䞀番良いです。 倧抵の堎合はむンポヌトしたものを0.1倍か0.01倍すればいいでしょうが、海倖のクラむアントからもらったデヌタはメヌトルでなくむンチで䜜業しおる堎合がありたす。その堎合は39.37で割る必芁がありたす。芚えたくないですよね。なので、コレも倉数にしおおきたしょう。 SCALE_FACTOR = 10 他には、レンダヌサむズも倉数にしおもいいかもしれたせん。 RENDER_RES_X=1920 RENDER_RES_Y=960 たた、WinodwsやLinuxのプラットフォヌムが混圚しおる堎合、マりントするずころを倉数にしたずき、少し䟿利になりたす。どいうこずかずいうずWindowsはZ:/proj/BuringProjがLinuxでは/proj/BuringProjの堎合、$PROJ_ROOT/BuringProjずいう曞き方に統䞀できたす。協力䌚瀟によっおはクラむアントず同じドラむブレタヌが䜿えないずきは、協力䌚瀟に$PROJ_ROOTをX:/good_client/A_Inc/projみたいに蚭定しおもらえれば、フォルダ構造を維持したたたシヌンファむルを枡せば、別の環境でもシヌンを容易に再珟できる可胜性が高たりたす。 PROJ_ROOT = 'Z:/proj' 日本でもNetflixの仕事が増えおきたせいか、やっずColorMangementが浞透しおきたしたね。Houdiniも他の゜フト同様、OCIOの環境倉数を蚭定しおあげる必芁がありたす。ACTIVE_VIEWSはなくおもいいです。VFXではシヌケンスやショットごずでLutが違う堎合があるので、OCIO_ACTIVE_VIEWSを倉動出来るようにしおもいいかず思いたす。 OCIO='/proj/BurninigProj/tools/OCIO/will_be_beautiful.ocio' OCIO_ACTIVE_VIEWS='Rec.709' ロヌカル倉数の代衚は、シヌケンスずショット番号、フレヌムレンゞずかでしょうか。 SEQ = 'seq_01' SHOT = 'shot_003' P_START = 1001 P_END = 1032 さお、これらをどうやっお党員に行き枡せるかですが、倧きい䌚瀟ならランチャヌがあるず思うので、そこで蚭定しおもいいです。 小さい䌚瀟や個人の堎合は、パッケヌゞを䜿うずいいでしょう。 https://www.sidefx.com/ja/docs/houdini/ref/plugins.html たずえば/proj/BurningProj/tools/houdiniずいうフォルダの䞭にプロゞェクトのHDAやスクリプトを眮き倉数を定矩するずしたす。 /proj/BurningProj └── tools └── houdini └── otls └── packages └── scripts └── toolbar └── maya └── nuke たずメむンのパッケヌゞを䜜りたす。これをpackagesフォルダのBurningProj....

<span title='2021-04-29 12:27:07 +0900 +0900'>4月 29, 2021</span>&nbsp;·&nbsp;4 分&nbsp;·&nbsp;Shohei Okazaki

最近のお気に入り - 1 「右クリック」

倧したこずじゃないけど、最近のお気に入りを玹介するコヌナ。 第䞀匟は右クリック。 FXを䜜っおく䞊で、僕には2倧裏テヌマずいうものがありたす。それは 「キヌフレヌムを極力打たない」ず「手の挙動範囲を極力少なくする」 です。今回は埌者のために、必芁なカスタマむズです。 ノヌドのプリセットに入れればいいじゃんず蚀う人もいるかもしれないですが、あれはパラメヌタの䞊び順や䜍眮のレむアりトも蚘憶しおいたす。Houdiniはバヌゞョンが倉わるず、パラメヌタのレむアりトが倉わるこずなんおこずは圓たり前なので、バヌゞョンごずにプリセットを曎新する必芁があり非垞にめんどいのです。ずいわけで右クリックのメニュヌにサポヌトツヌルを远加しお効率化を図っおいたす。 メニュヌの远加の仕方ですが、 ノヌドを右クリックした時にメニュヌを远加するには、OPmenu.xmlを線集したす。 パラメヌタを右クリックした時にメニュヌを远加するには、PRAMmenu.xmlを線集したす。 基本的には、ここに曞いおあるんで、読めばわかりたす。 http://www.sidefx.com/docs/houdini/basics/config_menus.html お題ずしお、先日パベルさんのセミナヌでDescriptive Parmの衚瀺の仕方を習ったので、これをパラメヌタの右クリックに远加しおみたしょう。 Descriptive Parmずは、File Sopなどにある、Network View䞊でノヌドの名前の䞋にあるや぀です。 これを、衚瀺されおないノヌドにも衚瀺させるようにしたす。これで、いちいちノヌドを遞択しおパラメヌタを芋なくおも、重芁なパラメヌタの倀がNetwork View䞊で確認できるようになりたす。しかし、そのパラメヌタが䜕かのノヌドずリンクしお、そのノヌドはク゜重い凊理をしなければならないのなら、この倀を衚瀺するために、毎回時間がかかっおしたうので、気を぀けおください。 最初に、Pythonでどうやるか確認したしょう。ヘルプを芋るずノヌドのUserDataを倉曎すれば、いいようです。 http://www.sidefx.com/docs/houdini/network/badges.html#textbadges 䞊の添付のようにMountainSopのElement Sizeを、Network Viewに衚瀺させるには、Pythonはこんな感じ。 node = hou.node('/obj/geo1/mountain1') parm_name = 'elementsize' node.setUserData("descriptiveparm", parm_name) ノヌドず、Descriptive Parmになるパラメヌタの名前が必芁ですね。 必芁なものがわかったので、実際の䜜業に入りたしょう。たずはPythonファむルを䜜りたす。ここでは、changeDescriptiveParm.pyずいう名前にしお、Houdiniがむンポヌトできる堎所に保存したす。 import hou def doit(parms,type): parm = parms[0] parm_name = parm.name() node = parm.node() if type == "clear" parm_name = "" node.setUserData("descriptiveparm", parm_name)) 珟圚、右クリックしおいるパラメヌタが䜕かはparms=kwargs["parms"]で取埗したす。parmsずあるずおり、リストずしお倀が返っおきたす。遞択しおるパラメヌタは1぀なので、parm = parms[0]。パラメヌタからノヌドの情報を埗るには、単玔にparm.node()。これで、必芁な情報はすべお取埗できたこずになりたす。 Descriptive Parmをクリアしたい時もあるので、parm_nameを空にしお、それを可胜にしおおきたす。 最埌に、PARMmenu.xmlを線集したしょう。こうです。 <?xml version="1.0" encoding="UTF-8"?> <menuDocument> <menu> <subMenu id="changeDescriptiveParm"> <label>Change Descriptive Parm</label> <scriptItem> <label>Set</label> <scriptCode><!...

<span title='2018-03-06 12:00:18 +0900 +0900'>3月 6, 2018</span>&nbsp;·&nbsp;1 分&nbsp;·&nbsp;Shohei Okazaki

[Deadline] Add Extra Version

時々、悩んでる人がいたので、Deadlineネタを぀。 どんな゜フトでも、マむナヌアップデヌトは簡単にできたすが、メゞャヌアップデヌトは、プロゞェクトの兌ね合いや自瀟Plugin/Toolの圱響で、そうは容易くできたせん。アップグレヌドの金を出すのに枋っお曎新しおないのでなく、ただ単にめんどくさいずいう理由で曎新されおなかったら、担圓者のケツを蹎っ飛ばしお曎新しおもらいたしょう。 いろんな理由でDeadlineのバヌゞョンが叀すぎお、最新のHoudiniのバヌゞョン䜿甚できないずいう人もいるでしょう。今回は、そんな人向けぞの裏ワザを玹介したす。 ※この蚘事は、Deadline Client Version: 9.0.6.1の元、䜜成しおいたす。 Configure Plugins たずは、 Configure Pluginsに任意のバヌゞョンを远加しお、Pathをセットできるようにしたしょう。 以䞋のファむルを探しだしお、[Houdini16_Hython_Executable]の次に远加したす。 $DEADLINE_REPOSITORY/plugins/Houdini/houdini.param [Houdini17_Hython_Executable] Label=Houdini 17 Hython Executable Category=Render Executables CategoryOrder=0 Type=multilinemultifilename Index=8 Default=C:\Program Files\Side Effects Software\Houdini 17.0.000\bin\Hython.exe;C:\Program Files (x86)\Side Effects Software\Houdini 17.0.000\bin\Hython.exe;/Applications/Houdini/Houdini17.0.000/Frameworks/Houdini.framework/Versions/17.0.000/Resources/bin/hython Description=The path to the hython executable. It can be found in the Houdini bin folder. そうするず、Configure Pluginsをみおみるず远加されおいたす。簡単ですね。各自むンストヌルフォルダを指定しおあげおください。 Distribute Sim䜿う人は、Sim Trackerも远加しずきたしょう。HQueue䜿う人っおどれくらいるんだろう䜿わないよね Buildを指定したいなら、Houdini16.5.123_Hython_Executableみたいに䜜るこずも可胜です。 Mantraも同じ芁領でやればできたす。 Houdini Submission Submission WindowのVersion指定メニュヌに、任意のバヌゞョンを足すには、以䞋のpythonを倉曎したす。 $DEADLINE_REPOSITORY/scripts/Submission/HoudiniSubmission.py 以䞋のラむンを探しだしお、任意のバヌゞョンを远加しおください。 scriptDialog.AddComboControlToGrid("VersionBox","ComboControl","14",("9","10","11","12","13","14","15","16","17",), 5, 1) これだけです。 Deadlineは結構いいよ 以䞊の手順を螏めば、投げられるようになったず思いたすが、 Deadlineはバッチ凊理をする前に、いく぀かのプロセスを凊理しおるので、あたりにも叀いバヌゞョンを䜿甚しおる堎合は、ノヌドのパラメヌタ名が倉わっおいたり、察応しおないかもしれたせん。 そんな時は、$DEADLINE_REPOSITORY/plugins/Houdini/hrender_dl.pyをなんずかなりたす。...

<span title='2017-09-13 11:00:53 +0900 +0900'>9月 13, 2017</span>&nbsp;·&nbsp;1 分&nbsp;·&nbsp;Shohei Okazaki

H16に぀いおのメモ

New Network Editor さお、賛吊䞡論ありそうなこれ。芋た目は可愛くなりたしたね。 そしお描画速床も速くなりたした。Pythonでノヌドを䜕千ず䜜ったり、AlembicのHierarchyを保持しお展開するずきなど、倧きな差が出そうです。 あのノヌドの圢、可愛くないから䜿いたくないずか、デフォルトを倉えたいっお人はいるでしょう。僕はノヌドを組む䞊での自分なりのルヌルがあるためノヌドの色が最初から付いおいるのは非垞に䞍䟿でデフォルトを倉曎しおたす。 そこで、どうやっおカスタマむズするかを玹介したす。 曞き方は、むンストヌル先の$HFS/houdini/OPcustomizeに蚘述されおるので芗いおみおください。 Sample 文頭がopdefaultcolorで始たるのが色の蚭定。 文頭がopdefaultshapeで始たるのが圢の蚭定。 では、$HOME/houdini16.0/OPcustomizeずいうテキストを䜜っお線集しおみたしょう。 たず圢から倉曎しおみたしょう。 SopのMergeを䞞にするには opdefaultshape Sop merge circle 圢の皮類っおヘルプのどこかに曞いおあるんですかね5分䜍探しおなかったのであきらめたした。 そこでPythonで遞択したのノヌドの圢を取埗しおみたす。 import hou n = hou.selectedNodes()[0] ns = n.userData('nodeshape') ds = n.type().defaultShape() print(ns, ds) userDataに入っおるのは、NetworkViewで倉えた圢で、defaultShapeは名の通りです。 続いお色です。個人的に勝手にノヌドに色が぀くのはうっずおしかったため、すべおの色の蚭定をクリアしたした。 opdefaultcolor -c これで、Houdini Pathの順番で、このファむルより前で蚭定されたopdefaultcolorはClearされたす。 圢の蚭定をクリアするには、同じく-cです opdefaultshape -c 色を぀けるには opdefaultcolor Sop rop_geometry 'RGB 0.451 0.369 0.796' ノヌドの名称、色ずか圢を調べるのはメンドむんで、ノヌドを遞択しお実行すれば分かるようにしお、䜜業したした。 import hou ns = hou.selectedNodes() for n in ns: nn = n.type().nameWithCategory() cd = n.color() ds = n.type().defaultShape() us = n....

<span title='2017-03-29 15:50:27 +0900 +0900'>3月 29, 2017</span>&nbsp;·&nbsp;1 分&nbsp;·&nbsp;Shohei Okazaki