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さて、早くも最終回な感じです。 今回はフィニッシュスクリプトというのを考えてみましょう。…

スクリプトが苦手な方にオススメ!PyMEL講座2(値の取得と設定編)

スクリプトが苦手な方にオススメ!PyMEL講座1(リネームから始めよう編) - 3DCGbook前回の続き… 今回は値の取得と設定を主にやっていきます。かなり雑ですが全てコードにまとめてみました。 """ 1. PyMELを使えるようにするコードは以下 """ import pymel.co…

スクリプトが苦手な方にオススメ!PyMEL講座1(リネームから始めよう編)

前回、このような記事を書きました。PyMEL使うの(ほぼ)やめました。 - 3DCGbookそれで何が言いたいかと…。 スクリプトが苦手な方にとってはPyMELは一つの強力なツールになるということです。これをどうしても伝えたい! どうしよう! じゃあ自分のブログで勝…

PyMEL使うの(ほぼ)やめました。

去年の半ばくらいからはほぼ使わなくなりました。使わなくなったといっても即時実行系ではたまに使います。 VectorやMatrix計算では便利なのでそういう点では利用します。 ただもともとメインをPyMELにしてたのをmaya.cmdsに変えただけですね。理由としては……

pycの利用

pythonコードを配布する場合、 「使うのはいいけど見せるのはちょっと…」っていうものがある。その理由のほとんどはコメントも書いてないし汚いから!であり、 究極的に素晴らしい天才的なコードの為見せられない!というわけではない。そんな時に使うのがpy…

set up Pixar-style rigging について

Maya - Creating Pixar Animation Controls Tutorial from Harry Houghton on Vimeo.これは要するに、 「アニメーターが部位単位でスムースをかけて形状確認ができる」 ってのがメリットでいいのだろうか。ただ気になるのが、 これは3つ複製してtransformGeo…

Maya - 回転変換系プラグインを2つ作りました。

3Dにとって回転というのは大きな問題…。 ただMayaってオイラー以外あまりサポートしてない気がする。 いや、Mayaのデフォルトでも頑張ればクォータニオン回転は得ることは可能ではあるが…。といっても余計な機能も付いちゃってるので、 そのくらい自分で作っ…

左側のDrivenKeyの数値をコピーして右側へ

例えば、「右ひじのDrivenKeyFrameを左ひじのDrivenKeyFrameの数値と同じにする。」 といったスクリプトを作ってみた。条件としては、 既に右ひじと左ひじにはDrivenKeyFrameが設定してあるということ。 要するにanimCurveUAが繋がっている状態である。とい…

ノード名の管理はどうしてる?(Maya編)

仕事になるとどうしても出てくるのがノード名をどう管理するか? という問題。リガーとなるとここは徹底して管理したいと思っている。そもそもノードに名前をつける理由を知ることが重要。 ノードに名前をつけるというのはファイルに名前をつけるということ…

プログラマでもなく仕事でスクリプトを書くことについて。

そういえば昨日、1000ほどのアクセスがあった。 こんなほそぼそとしたブログなのになんで...と思ったら CGWORLD.jpさん(@CGWjp)がTwitterでつぶやいてくれたようだ。 こんなとこでも見ていてくれるのは嬉しく思うので頑張ろう。さて、昨日はスクリプトを1日…

【今日のPython for Maya】 Create Parent Joints

jointの上にOffset用のjointと何かに操作されるJoint... DrivenJointと言えばいいんでしょうかね。 これらを指定数作ります。Mayaはワールド座標から継承しまくって最終的な座標出されます。 全てワールド座標だと重たいですしね。Offset用jointを作るのは、…

mentalray ライティング まとめ1

//mib_blackbody 色温度 http://ja.wikipedia.org/wiki/%E8%89%B2%E6%B8%A9%E5%BA%A6黒体 http://ja.wikipedia.org/wiki/%E9%BB%92%E4%BD%93//mib_cie_d 色空間 -> CIE表色系 http://ja.wikipedia.org/wiki/%E8%89%B2%E7%A9%BA%E9%96%93//mia_photometric_li…

Wrap…

Wrapを自動化とかしたいんだけどうまくいかない… 自動化している人はどうやっているんでしょうか? ちょっと気になる…。例えばだけどこんな感じでしかできないのかなー。 っていうので簡単に作ってみると… import pymel.core as pm def createWrapReturn(): …

工業製品こそスクリプトでモデリング!

買っちゃいました自転車。 カラミータのDUEってバイクです。ロードレーサー…というか自転車は素人なので、 見た目重視で買ったらギアの構造がWレバー方式っていうやつでした。あれギア変えられないなぁ…。 「ツークリックや!!」と弱虫ペダルばりにやろうと…

OpenMaya 勉強中 その6 [LocatorNode]

さすがにこれは無駄に長いので書きはしないけど… 本当、OpenGLの勉強すればいろいろできそうですね! これはキューブなんだけど…これだけでも結構感動しました。なのでちょっとOpenGLの勉強しようかなーという気持ちになれてます(^^)

OpenMaya 勉強中 その5 [SinNode]

そういえばMayaってsin、cosノードってありましたっけ? ノードとしてはないような…sinノードにPlusMinusAverageとか、MultiplyDivideとかはさめば 結構使えたりしそうですよね。カメラシェイカーとかそういうのに。個人的に、こういう初歩的なプラグインか…

OpenMaya 勉強中 その4

頂点にpartcleを生成。 これからちょっとアドバンス的なのを目指す叩き台… まずはひたすらおさらいしてます(^^;そういや2014のAPIガイドはPythonの項目がかなり増えてましたね!いい感じ! import sys import maya.OpenMaya as om import maya.OpenMayaMPx a…

知っておいて損しないMayaで四則演算

Mayaでの四則演算…地味にいろんなところでできます。四則演算は数値をハイライトさせて、・+= 数値 ・-= 数値 ・*= 数値 ・/= 数値やらを入力してEnter!! オフセットとか数値反転とかでよく使いますね。 では使えるところをちょっとだけ紹介。もっと使える場…

OpenMaya 勉強中 その3

フラグをつける方法をなんとなく理解。しかし先は長い! これで、ワールドかローカル座標を返すだけですからね!(笑) スクリプトだったら一行とかですよ!この先のステップまで理解できるように早くなりたい… import maya.OpenMaya as om import maya.OpenMa…

OpenMaya 勉強中 その2

基本的ですが、 1.シーン上にあるポリゴンメッシュを走査 2.それらの頂点情報を出力する import maya.OpenMaya as om dagPath = om.MDagPath() meshFn = om.MFnMesh() pointArray = om.MPointArray() iter = om.MItDag() while not iter.isDone(): iter.getP…

OpenMaya 勉強中 その1

プラグインを作りながらOpenMayaを勉強… というのは僕には合ってなかったみたいです。 というか素人プログラマー気取りの僕にはまだ早かったです(笑)なので、OpenMayaを一つ一つ丁寧に理解していこう!にシフトチェンジしました。 C++だと一つ一つ丁寧にが面…