CREATIVE MEMO | クリエティブ・メモ

PySide組み込み方

巷ではPyQtさんが、PySideはゴニョゴニョ・・と発表したのでPysideは今後どうなっていくのかなぁという感じですが、ここで各DCCツールでのPysideの使用方法を記します。
ソースが汚いのと細かい説明は省いているのはご了承ください。
加えて、紹介するには不要な文までありますが・・・
変数 toolpypath はpythonフォルダまでのフォルダパスです。

◆Maya
先ずはPysideなどモジュールのインポート色々
MayaのバージョンによってPythonバージョンも使い分けます。

import pymel.core as pm
import maya.cmds as cmds
import maya.mel as mm
from maya import OpenMayaUI as omui
from modules.mayaDataInfo import MayaDataInfo
sys.path.append(os.path.join(toolpypath,r’Python27′))
sys.path.append(os.path.join(toolpypath,r’Python26\Lib\site-packages\PySide-1.1.3dev-py2.6.egg’))
appliCheck = str(cmds.about(product=True))
if int(appliCheck[-4:]) < 2014:
sys.path.append(os.path.join(toolpypath,r'Python26\PySide'))
else:
sys.path.append(os.path.join(toolpypath,r'Python27\Lib\site-packages\PySide-1.2.1-py2.7-win32.egg'))

sys.path.append(os.path.join(toolpypath,r'Python27\Lib\site-packages\ordereddict-1.1'))
import ordereddict
import shiboken
from ctypes.wintypes import MAX_PATH
from PySide import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

.uiファイルから.pyにGUIを変換したものをインポート

from DML_testGUI import Ui_MainWindow

実行文。色々書き方はありますが、私的にはこれがベター。
Mayaアプリケーションの後ろにウィンドウが隠れないので便利です。

mayaWindowP = omui.MQtUtil.mainWindow()
mayaWindow = shiboken.wrapInstance(long(mayaWindowP), QtGui.QWidget)
mainWindow = QtGui.QMainWindow(parent=mayaWindow)
if cmds.window(‘mainWindow’,ex=True) == 1:cmds.deleteUI(‘mainWindow’)
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
mainWindow.show()

◆MotionBuilder

先ずはPysideなどモジュールのインポート色々

from pyfbsdk import *
from pyfbsdk_additions import *
sys.path.append(os.path.join(toolpypath,r’Python27′))
sys.path.append(os.path.join(toolpypath,r’Python26\Lib\site-packages\PySide-1.1.3dev-py2.6.egg’))
appliCheck = str(FBSystem().ApplicationPath)
sys.path.append(os.path.join(toolpypath,r’Python26\PySide’))
sys.path.append(os.path.join(toolpypath,r’Python27\Lib\site-packages\ordereddict-1.1′))
if int(str(FBSystem().ApplicationPath).split(“MotionBuilder “)[1][0:4]) < 2014:
sys.path.insert(0,os.path.join(toolpypath,r'tk-motionbuilder-master\resources\pyside112_py26_qt470_win64_vs2010'))
import ordereddict
from PySide import QtUiTools
from ctypes.wintypes import MAX_PATH
from PySide import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

from DML_testGUI import Ui_MainWindow

実行文。色々書き方はありますが、私的にはこれがベター。
MotionBuilderアプリケーションの後ろにウィンドウが隠れないので便利です。

top_level_windows = QtGui.QApplication.topLevelWidgets()
for w in top_level_windows:
if (type(w) == QtGui.QWidget
and len(w.windowTitle()) > 0
and w.parentWidget() == None):
mainWindow = QtGui.QMainWindow(parent=w)
ui = Ui_MainWindow()
ui.setupUi(mainWindow)
mainWindow.show()

◆Windows
先ずはPysideなどモジュールのインポート色々

from PySide import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

from DML_testGUI import Ui_MainWindow

実行文

app = QtGui.QApplication(sys.argv)
mainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())

MotionBuilderは情報が少ないので、どう使うんだーとお困りの方はお役立て下さい。
NukeやAfterEffects版はまた今度ー。

What do you think of the post?
いいね (2)

テクスチャ解像度によるレンダリングコスト

近年4Kなどもあってどんどんテクスチャ解像度が上がっています。
個人的には大きくても2Kサイズのテクスチャにしようよと思っていますが、
案件が多忙だと、とにかくデカく作っちゃえ!という感じで進めてしまっている場合も
ちらほら見かけます・・。
結果、レンダリングコストが増大になり、メモリもかなり使うといったことになって
レンダリングチームが困り、レンダリングファームも足りなくなり、良いことなしです。

そこで参考資料。
http://help.chaosgroup.com/vray/help/rhino/150R1/tools_img2tiledexr.htm

https://elementalray.wordpress.com/2012/04/17/texture-publishing-to-mental-ray/

まだ案件では使ってないですが、Tiled EXR というものがあります。
EXRにMipMapを内包するようなものです。

Vrayをお持ちでしたら、上記参考サイトにあるコマンドを試したいファイルパスに編集し
コマンドプロンプトで実行してみてください。
tgaなどのテクスチャからサクっとEXRが作れます。

13段階のmipmapが作られるようですが、試しに8Kサイズ(でかすぎ・・)のテクスチャでやったところ
ヨリは5秒⇒2秒、ヒキは5秒⇒1秒のレンダリング時間となった。
テクスチャの容量は増えますけどね。レンダリング時間の結果としては良さそうです。

まだまだ使いこなしているものではないので、何か問題などあるのかもしれませんが
良かったら使ってみてください!

そういえば、Exocortex 社alembic プラグインが Open Sourceになりましたね。
ありがたいことです。

では。

What do you think of the post?
いいね (1)

AfterEffectsでキャラクターリグ

面白い紹介動画があったので、紹介します。
AfterEffects上でのキャラクターリグ。これできたら便利そうですね。

YouTube Preview Image
What do you think of the post?
いいね (1)

社内ツールをより良くするために

社内で作られたツールを使っている方は分かるかと思いますが
必要になって作られたツールのハズなので便利な反面、ツールが増えて雑多になったり
どのツールが便利なのか、どういったツールがあるのかさえ分からなくなったりします。

DMLでは全てのツールを対象に使用ログを出力し、そのログから集計も出来るツールという
開発者のためのツールもあります。

ログの集計ツールは、ログのフォルダを選択し実行すると下図のように
ツールごとの集計と、最後に全ツールの総合情報を記載した表をシート別に生成します。

次のメリットがあると考えてこのような仕組みを作っています。
・使用されていないツールは不要と捉え、定期的に削除(アーカイブに移動)し整理できる
・よく使用されているツールは使ってない人にも定期的にお知らせをし更なる生産性と品質向上につなげる
・利便性の高いツールなのに使われていない場合は普及活動が足りないので、改めて情報共有し生産性と品質向上につなげる
・ユーザーが必要、便利だと思い使うツールの傾向を把握できる
・ツールを積極的に使う人、使わない人を探り啓もう活動に活かす
・使われていることを知ることで開発者のモチベーションを上げる

さいごに
・開発者の評価につなげる・・・これが案外大事(笑)

他にも色々メリットはあります。
こういった環境構築もとても有用なことだと思いますので、お悩みの方や
これからツール作っていくぞ!という方は本記事が参考になれば幸いです。

What do you think of the post?
いいね (4)

新たな一歩に実用的な一冊

以前faceShiftの記事を書いて以来のサブミットです。

なにを書こうかな~と辺りを見回すとデスクに置いてあるゲームエフェクトの本が目に入りました。

数年前は、CG系の参考書というと
ツールの機能をただ羅列したようなものが多くやたらにお値段が張る印象がありました。。

でも今は数年前に比べて種類も豊富になって
内容も実用的でお値段にも納得できるものが増えてきましたよね。
基本的なことはネットで無料で調べることができちゃう時代ですから、
書籍に求められるものも変わってきた、ということでしょうか。

このゲームエフェクト本も、かなり役立つアイディアの宝庫です。
実務経験をする前に手元に置いておきたかった…

なので今回は新たな一歩を踏み出す人が幸せになる
是非ともおねだりして買ってもらうべき書籍を紹介します。
学生は学校に、社会人は会社に、旦那さんは嫁さんに、お子さんはお母さんにおねだりしましょう。

実用書籍

BISHAMON ゲームエフェクト デザイン入門

これまで教えてもらえる機会がほとんどなかった
ゲームエフェクト分野への道を切り拓いてくれる数少ない書籍。
テクスチャの作り方とか、なんとなくやっていた人はなるほどと思う部分があると思います。

Mayaリギング 正しいキャラクターリグの作り方

今読んでるんですけど、かなりぐさっと来る箇所が多いです。 こうしておけばよかった…と。
これを読んであなたも「不幸なリガーにならないようにしてください。」(P126)

Filmmaker’s Eye 映画のシーンに学ぶ構図と撮影術:原則とその破り方

僕は活用する機会は少ないんですが、作例を知っておくと画を決める判断材料になるかも。
映画をもっと楽しむため、読み物としても面白いと思います。

ZBrshベーシック(DVD)

これは書籍ではないですし基本機能をまとめたものなのですが、、
この見易さ、聴きやすさはZBrushの導入にはとってもいいですね。

ゲームの作り方 Unityで覚える遊びのアルゴリズム

自分で作ったキャラやエフェクトをせっかくだからインタラクティブに動かしたいな、そんな動機で書籍を漁っていると良本がありました。
いろんなジャンルのサンプルゲームが入っていて、ソースコードの解説だけでなく遊びのデザインもしっかり書かれています。
Unityの基本的な操作などは付属のDVDにPDFが入っており、そちらもとても解りやすいです。

ゲームアート 古典に学ぶキャラクターと世界の描き方

これは…読みたい!(ぉ

Disney Animated

こちらも書籍ではないですが、ディズニーの技術と歴史を楽しく学べるipadアプリ。
随所がインタラクティブに動き、参考に載っているアニメーションは全て自由に動かせます。
作品の全編がカラースクリプト風に並べられたカラーマップは圧巻…
1000円とは思えない内容です。

* * * * * * * *

独断と偏見、思いつきでピックアップしました。 少し古かったかもしれませんね…

もちろん本を読んだからといって力がつくわけではないですが
こういった先人の教えから「力の入れどころ」を知ることができます。
知っていれば避けられること、無駄な労力は使わなくていいと思いますし。

僕みたいに、いきなり実務で怪我をしながら覚えてもいいんですが、
ビクビクしながら作るよりもワクワクしながら仕事ができるかと思います。
お役立てください。

取り留めのない記事となってしまいましたが、以上です。
最後までお付き合いありがとうございました。

さてと kinect2の発売を正座して待機っ

What do you think of the post?
いいね (4)

python for Maya スクリプト講座

おそらく近年Mayaユーザが増えたであろう状況かと思いますが、それも影響してかスクリプトが書ける能力の需要が増えているように感じます。
というわけで最近社内ではTAによるスクリプト講座なるものを開始しました。
スクリプトのスキルを身につけたい!という声に応えたというのもありますが、TAが大規模ツールに専念するために、ちょっとしたのは各チームで書けると良いよね!という目論みもあったりします。

MayaとPythonがメインなのですが、初回はもう本当に基礎です。
VBSなど主な言語の特徴から使い分け、Pythonの種類とかコマンドの調べ方など色々と基礎知識を説明しました。
Pythonについては主に以下を説明しました。
/////
変数とは
改行
関数(概要紹介程度)
print文
for文
if文
split文
try文
listとは
リスト取り出し
import文
strとint
コメントアウト、複数コメントアウト
/////

多分、これを知ってればやりたいことの大半に活用できるものかと思います。
それ以外の知識は中級レベルだったり応用って感じですね。
知ってると良いポイントさえ知っていれば、あとはネット検索でも本でも詳細を見ればマネて書けると思います。
デザインでもCGでもスクリプトでも、マネから入って後から自分なりにやっていけば成長も早いのではないかと考えています。

スクリプトやりたいけど、何からやってよいやら・・という方は上記ポイントを先ず調べてやってみることを個人的におすすめします。(学び方は色々あると思うのであくまで個人的に推奨ということで)

では。

What do you think of the post?
いいね (2)

mentalray レンダリング効率化~BSP~

ざっくり記事連載も最後になりました。
BSP、これが3つのなかでも設定は厄介かも・・

ちなみに、というか結構重要な気もしますが、現在はBSP2が初期使用になっているはずです。
BSPは自分で深度など決めますが、BSP2は自動最適化で大規模シーンに適しているそうな。
BSP2は自動なので設定欄が無いですね。

しかし自動がゆえに逆にレンダリングコストを増してしまう場合もあるので
なんかレンダリング重いなぁというとき、BSP2が原因の1つなら、BSPでやってしまいましょう。

設定するときの基準値は下記で考えています。
リーフの最大サイズ1~10、ツリーの最大深度を20~27 の間で試し調整を進める。
ログの数値をみつつ調整していくのが主になると思います。
Mayaは診断レンダリングがあるので、診断色も目安になりますが、私は診断レンダリングを利用するときは
最終調整はログをみつつ、レンダリング時間を調整しています。

あと、Separate Shadow BSPは影を別で計算しますよーという意味で
重いシーンの場合有効な設定だと思います。

BSPは前処理もあり、どう設定すべきかはケースバイケースすぎて定めにくそうですが
単純にレンダリング時間を短縮したい場合は、平均リーフサイズがあまり減少しなくなるまで最大深度を大きくするよう
に目安として設定します。
前処理を短くしたい場合は、max leaf size が非常に大きくなり始めるまで最大深度の値を小さくします。

診断レンダリングの目安は、全体的にカラフルな画になるようにすると良いみたいですが
これも一概には言えない結果もあるので(軽すぎるシーンとか)、これが答えではなく目安として設定します。

ちなみにSoftimageは2012の時点でBSPメニューがありません(それ以前のバージョンはどうだったか確認してません)
メニューにはなくてもBSP2に設定されていて、これをBSPで行いたいときは
環境ファイルをいじるしかありません。なんて不便なんでしょう・・・
Setenvに下記のように「最大深度 サイズ」で指定します。
set MI_FORCE_OLD_BSP=60 10

あいからずのざっくり記事でしたが以上でmentalrayレンダリング効率化は終えたいと思います。

DCCツールによって使えたり使えなかったり、良く使うレンダラーもmentalrayじゃなかったり、あったりだと思いますが
mentalray使うときの参考程度になれば幸いです。

最後に・・・
本記事で公開している全ての効果、内容について当方は一切の保証を与えるものではありません。
本記事の内容を使用したことによって起こる損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。

What do you think of the post?
いいね (1)

mentalray レンダリング効率化~統一サンプリング~

統一サンプリング(Unified Sampling)なるものがあります。
名前の通りですが、特にぼかしに強いようです。
Softimageは2012で既にメニューがありますが、Mayaは2014からメニューにでているようで2012とか2013で
使いたいときはストリングオプションを設定するか、enjoyMentalRayStringOptionsといったプラグインを活用してください

メリットは以下のように感じています
品質管理を一元管理+αにできる。ちらつき緩和。ものによってはレンダリングコスト減。

あまり足りてない品質設定だとあからさまなカラーノイズが出ます。
Mayaだと診断レンダリングもできます。
わざとブラーやエリアライトやらでぼかし系を多様してみたところ、従来のサンプリング方法よりも1枚1分近く短縮できました。

熟練した機能ではないのでアレですが、今のところ下記の手順かなと考えています。
Min 1.0、Max 100.0 から始めます。
Quality を2.0、3.0 にあげてみます。次にMax を上げます。
Cutoff は0.1(0.05 推奨)から開始

毎度内容がざっくり記事で失礼します。

最後に・・・
本記事で公開している全ての効果、内容について当方は一切の保証を与えるものではありません。
本記事の内容を使用したことによって起こる損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。

What do you think of the post?
いいね (1)

mentalray レンダリング効率化~最適化オプションによる最適化~

本題の前に。
レンダリング効率を上げることで次のことを目指しmentalrayについて社内でまとめました。
レンダリングコストに直結すること以外にもサンプリングの理解やチラツキ緩和などについてもまとめたものです。

・レンダリング待ち状態の軽減
・レンダリングサーバーの効率運用
・レンダリングコストの削減
・Try & Error のコスト削減
・サンプリングなどの理解による品質向上
・時間的コスト削減による品質向上
などなど

今回のパラメータはSoftimage向けと言えます。Mayaには無いものがありますのでご注意ください。
また、設定はあくまで目安ですが、結構目安通りで大丈夫なケースが多いかなという個人的印象です。
■重いデータの場合
[メッシュ分割係数](Mesh Splitting Factor)の値を減らす
[タイルの順序](Tile Order)を[ヒルベルト](Hilbert)に設定
[タイルサイズ](Tile Size)を減す
Render Type を Raytrace に設定

■軽いデータの場合
[メッシュ分割係数](Mesh Splitting Factor)の値を増やす
[タイルサイズ](Tile Size)を増やす

設定をかえて、2Frほどレンダリングした2枚目のレンダリング時間を設定ごとに見比べて
時間の早い方を導きます。目安の設定で大概早くなってる・・ハズ。

アセット時に素材を決めるフローならアセット時に、ショット時ならショット時にテストして設定内容を導くのがベターだと思います。
1素材づつテストするのが良いですが、レンダリング時間のかかる素材(ビューティやオクルージョン)、軽い素材(マスクやデプスなど)のそれぞれの代表素材だけやって、他素材に適用でも十分効果出ていますので、時間がかけられない案件や状況の場合そうやって省略しても良いかもしれません。

あまり細かく書くのも大変なのでざっくりとにさせて頂きました。
まぁ、大体はこのような感じです(ほんと雑ですね・・)

最後に・・・
本記事で公開している全ての効果、内容について当方は一切の保証を与えるものではありません。
本記事の内容を使用したことによって起こる損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。

What do you think of the post?
いいね (0)

mentalray レンダリング効率化

こんにちは。今日はTAの社内発表、情報共有の場を設けました。
題して「mentalrayのレンダリング効率化」です。
案件の実証としては75カットで450時間のレンダリング時間の削減をしました。
あぁ、なんて無駄が多いのでしょう。
忙しいときこそ、手間をおしまず調整すべきですね。わかってはいるけどナカナカ・・。

さて、説明した内容は大きくわけて3つ
1.最適化オプションによる最適化
2.統一サンプリング
3.BSP

SoftimageやMayaなど各ツールで搭載機能がマチマチです。
たとえばタイルオーダーなどはSoftimageにありますが、Mayaには搭載されていないようです。
GUIに無いだけでなくストリングオプションでの設定も機能として現時点で用意されてないみたいなので
そのあたりは、無いものは無いとあきらめるしかないかもしれません。

1の最適化オプションとは、タイルサイズや、メッシュ分割係数などの設定でレンダリングコストをさげられます。

2の統一サンプリングとはQMCを利用したサンプリングで、従来のサンプリングよりボカシ系に強かったり
色々とメリットがあります。Maya版メンタルレイではたしかMaya2014からGUIにでてきてますが
それ以前(2012、2013)のバージョンでもストリングオプションで設定できると思います。

3はBSPは以前からありますが、現状BSP2になっていて自動化されています。
以前のバージョンはレギュラーBSPが該当します。

1は大体1カット5分もあればできると思いますが
BSPになってくるとちょっと調整に時間はかかりますね。
今15分くらいでやっていますが今後もうちょっとサクっとできたら幸せです。

劇的な削減は場合によってはありますが、基本はチリもツモれば何とやらで
1Fr3秒とか10秒とかの削減です。
でもカットが90Frあって、レンダリング要素も10素材あって、キャラが2体にBGもと考えると
3秒 x 90fr = 270秒 → 270 x 10素材 x 3(キャラ2体+BG)= 8100秒 = 2.25時間
単純計算でもこれが100カットあれば、200時間もの削減です。

2~3秒減らしてもねぇ、なんて思わずに全体を通して考え設定するほうが
みんな幸せになるので、今後もどんどん調整していこうと思います。

各項目の調整の仕方はまた今度かこうかな(多分・・)と思います。
それでは。

What do you think of the post?
いいね (0)
やさいのようせいThe Moive
ライセンス・ラボ

ページ上部へ戻る