3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

Maya

【まとめ】気になる記事 Mayaテクニカル #002

GREE Creators' Meetup 第3回 connpass.com自分は行ってないですけど。togetterまとめもありました。 「Cygames Tech Fes ~Cygames流!Unity × スマホ3Dゲーム開発のすべて!~」のツイートまとめ - Togetterまとめ テクニカルアーティストがFlashToUnityと…

【Python】クラスを使ったPyMel風なコネクション

こんな感じ? import maya.cmds as cmds class Node(object): def __init__(self,node): self.node = node def __getattr__(self,attrname): return Node('%s.%s' %(self.node,attrname)) def __repr__(self): return 'Node("%s")' %(self.node) def __rshif…

【Maya Tips】*、?、#で作業効率アップ!

Mayaで*、?等の記号はよく使いますでしょうか? これらはノードの検索とかで非常によく使えます。 命名規則をしっかりしていればこれだけでなんとかなるものもたくさんあります。これらは任意の文字列で検索したい時に使います。 正規表現のライト版?みた…

【Maya Tips】お手軽なピッカーの作り方

リグのコントローラを選択しやすくする為に、 ピッカーというのを容易することがあります。要はコントローラを選択しやすくする為のGUIです。 1.命名規則を作ります。 ・選択されるオブジェクトが pSphere1 とします。 ・pSphere1を選択するピッカーの名前を…

【MEL Tips】mag関数について

mag関数とは、ベクトルの長さを返す関数です。以下の例で使ってみると、 vector $hypotenuse = <<10,5,0>>; mag($hypotenuse); // Result: 11.18034 // ただmag関数を使わなくてもvector型をfloat型にキャストすれば同様の結果を得られます。 vector $hypote…

【まとめ】気になる記事 Mayaテクニカル #001

// Tool Chefs - 3D Plug-ins for you 今のところ、無料で全てのプラグインが使えるようになりましたね。 個人的に面白いなぁ…と思うのはCammeraLatticeプラグイン。ショットの段階でここのアウトラインがなぁ…とか気になるところが出てくるんですよね。 そ…

【Python】ノードベースな関数!のススメ

まずは例を、 ''' 例1 ''' # for等を関数の中に入れる(全部入り) def selectionLockTranslate(): sl = cmds.ls(sl=True,type='transform') for node in sl: cmds.setAttr('%s.translate' %node,l=True) allTranslateLock() ''' 例2 ''' def lockTranslate(no…

3Dにおける関節位置を考える

リギングをしているといつも関節位置に迷う。 安定しているのはど真ん中にジョイントを置く…。 なのだけれど人体構造を考えるとそうではないよなぁ…とふと思考のスパイラルに陥った。 3Dにおけるボーンの動き イメージとしてはこんな動き。これは機械の駆動…

PythonらしいTranslate、Rotate、Scaleのコネクション

こんな感じはどうでしょう… というだけ。(笑) import maya.cmds as cmds # 元オブジェクトとターゲットオブジェクトを指定 src = 'pCube1' dst = 'pCube2' # コネクション for compound in 'trs': for leaf in 'xyz': cmds.connectAttr('%s.%s%s' %(src,comp…

Point On Poly に気を付けろ!

久々にMayaのことを書く気がします。 しかも基本機能のことを書くなんて非常に稀な気もします。さて、Point On Polyについて先日こんなことがありました。 「データを開いたらコンストレインしていたノードが全部原点にある!」という問題。なんだろうと思っ…

Maya - メッシュには必ずデフォーマーをかけてからDelete History!

先日、 「なんでメッシュにClusterとかLatticeをかけてからDelete Historyするの?」 みたいに聞かれたので簡単にまとめておこうかと。これをやる結論としては、 メッシュノードのTweak値を0にする為です。 これが0になっていないということは、まだ編集中の…

可変長引数でsetAttr

compoundアトリビュートのsetAttrって地味に面倒くさいですよね。 何故ならlistでそのままsetできない!要するに、 translate = (1,2,3) cmds.setAttr('pSphere1.translate',translate) ができないってことです。これをやるには、 tx,ty,tz = (1,2,3) cmds.s…

ちょっとだけAlembic

最近は若干リグを離れて、 キャッシュとかクロス周りを勉強中なので...Alembicキャッシュについて少しだけ。まずAlembicとは何かというところから。 詳しくはこちらでまとめてくれてるので...笑 Alembic | memlog http://blog.taikomatsu.com/2010/07/28/ale…

僕はスキンウェイトが嫌い。

Mayaのお話。 題名通り僕はスキンウェイトが嫌い。なんてったってリグの中で唯一アーティスト的な作業だから。 よって正解がない。 見る人によって好みが異なるといった状況。僕が見る場合は明らかにリグ的エラーがなく、めり込んでなければそれでいいってく…

Mayaでの"スクリプト力"を向上させる提案

今日、飲み会でふと聞かれたことなので、 自分なりのスキルアップ方法をまとめてみます。 あくまで自分なりのです。僕の場合は、 ・よく使うコマンドを同じように使わない、フラグの意味は全て理解する ・別の方法で同じことができないかどうかを考えてみる …

画像データの管理について考える

本日はお休みを頂きました。 が!結局やることはCGなんですよね。あはは。現在、自分用パイプラインを考えているのですが、 どうも画像管理がネックになります。 例えば、よくあるモデルパッケージの状態というと… 全部入り…というやつなんですけどこれだと …

Starting to develop modular rigging system !

Modular Rigging System 開発にようやく着手しました…。 とはいえまたプロジェクトが忙しくなったら止まるんだろうなぁとも思いつつ。さてModular Rigging Systemをは何かってお話から。 部品単位のリグを生成する…といえばいいでしょうか。例えば人間だった…

fileノードって割と情報取れるよね

最近はブログの題名に迷います。 fileノードってお題にして、いきなりMayaの話か~! ってわかる人もそんないないのかなぁ…と思ったり。理由としてはPythonってお題となると様々な業種の方がいるんですよね。 むしろMaya限定でPythonを使う方が少ないと思い…

パフォーマンステストからわかるPyMELの重さ

前回に引き続き、パフォーマンステストブームなので…。 今回は3000個のpolySphereの法線をチェックする場合の時間を計ってみました。 結果 ライブラリ 時間(秒) maya.cmds 14.5990002155 pymel.core 47.5500001907 Python API 1.0 0.258000135422 Python API…

MayaでのgetAttr...文字列連結でのパフォーマンス

ものすごーくマニアックです。 パフォーマンスを調べるのが最近のブームなので…笑 計測お題 polygonSphereを3000作成し、 ・translateX ・translateY ・translateZ ・rotateX ・rotateX ・rotateX ・scaleX ・scaleY ・scaleZ ・visibility を取得する場合に…

三次元回転を極める

タイトル… 懐かしいタイトルと思った方は同志と勝手に思います。元ネタはこちら。 3次元回転を極める ~ 一歩進んだキャラクタアニメーションプログラミング ~ | CEDEC 2010 | CESA Developers Conference懐かしいですね。 CEDECのいいところは、基礎から教…

MayaでPySide始めてみました。

家のメインのMayaを2015にしたので、 せっかくだからPySideを使ってWebブラウザを作ってみました。というよりはブラウザ以外はPySideで作りたいものがないという現実もあるのですが…。 理由としてはMayaのウインドウって割と優秀なんですよね。相当複雑なこ…

かっこつけてsetDrivenKeyframeを作成する

リガーやコード書きにとって、 いかにワークフローをかっこつけられるか!も大事です。 むしろ僕はこれしか頑張ってません。無駄に頑張ってます。無駄に。 例:joint_driver で joint_driven をdriveしたい。 1. 使うフラグをまとめたcsvファイルを用意しま…

メインツールのMaya2012からMaya2015に変えた結果

設定ファイルが見事に動作しません。 むしろMaya2012の設定をそのまま使うとViewが真っ暗になって使い物になりませんでした。よって、最初から環境構築をしています…。 これ…設定に丸一日かかりそうな予感すらしています…。一気に3バージョン上げは当然の結…

Mayaオペレーション高速化計画 ~ 紹介編 ~

スクリプトはもちろん大好きなんですが… 実はワタクシ、オペレーション高速手法考えるマニアでもあります。 なんじゃそりゃって。では、Mayaを使ってオペレーションを早くするにはどうするか。 ちょっと羅列してみましょう。定番としてはこれら。 カスタマイ…

弧度法と度数法

自分がゲーム業界にいた頃にプログラマに「ラジアン単位で…」とか言われて、 「は?んだそれ?」となったのを今でも覚えています。さて、Mayaと何が関係あるか…ということから。 まずMayaのデフォルトは度数法(degrees)です。 もう一つ弧度法(radians)があり…

Maya Python API 2.0 のMatrix計算が便利

Maya Python API 2.0、凄く便利ではまってます。Maya Python API 1.0だと、MScriptUtilェ…な問題が発生してたのですが…。 お手軽にmatrix計算ができるので勉強になります。例えば、 import maya.cmds as cmds import maya.api.OpenMaya as om2 """ # DAG pSp…

フェイスにマテリアルをアサインするというヒストリー

フェイスにマテリアルを適用するのって便利ですよね! それについてちょこっとだけお話。 1. フェイスにマテリアルがアサインされた状態。 2. polySmoothFaceをかけた状態 あれ!アサインしたのにどっかいっちゃった…。底にいました! これは、polySmoothFac…

addAttrのcompoundを使うと夢が広がる

overrideEnabledやoverrideDisplayType… これらは現場で働く人なら必ずしもよく触れると思います。私の場合はsetsを作りそこにoverrideEnabled等を追加して、 TransformノードやShapeにコネクトしていました。 CompoundではなくLeafでコネクトしてたというこ…

スクリプトが苦手な方にオススメ!PyMEL講座3(フィニッシュスクリプト編)

スクリプトが苦手な方にオススメ!PyMEL講座1(リネームから始めよう編) - 3DCGbook スクリプトが苦手な方にオススメ!PyMEL講座2(値の取得と設定編) - 3DCGbookさて、早くも最終回な感じです。 今回はフィニッシュスクリプトというのを考えてみましょう。…