3DCGbook

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

Maya

スクリプトが苦手な方にオススメ!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++だと一つ一つ丁寧にが面…

MELからPythonへ簡単に書き換える方法

こちらはPyMel限定になります。早速ですがやってみましょう。 import pymel.core as pm import pymel.tools.mel2py as mel2py melCmd = """ polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1; hilite pCube1 ; select -r pCube1.vtx[5] ; …

メモ:Display表示したVertexやNormalがToggleにより消えない時

このようにToggleしあって、NormalやVertex表示が消えない時。 そもそもDisplay→Polygons→VerticesにはToggleVertices;というMELコマンドを行っています。 Toggleなので片方の表示がイカれた時点でおかしくなります。ので、Toggleじゃなくて完全にオフにする…

配列内をランダムに抽出

今までMarkdown記法を使っていたのですが、 はてな記法に戻しました。そしてSyntax Highlighterを使うのをやめようかと… はてな独自のを使っていく方向で。理由は相性が悪いなーと。 Syntax Highlighter内にはてなのリンクが勝手に貼られたりしちゃったり、 …

2頂点をくっつけてキーフレームを打つ

1.くっつけたいとこのvertexを選ぶ 2.くっつけるvertexを追加で選ぶ 3.引数のところにどこからどこまでキーを打つか値を入れる 4.スクリプトの実行 これはシミュレーション用といってもいいでしょう。 シミュレーションはよく暴走するので…くっつけときたい…

頂点情報のコピーとペースト

メモレベルのスクリプトなので汚い…。 ただ長いフレームを取得するとやばいかも。 全部をdataに突っ込んでるので(^^; import pymel.core as pm inFrame = 61 outFrame = 137 def getVertexPosition(inFrame,outFrame): global getMesh global data data = []…

再帰:ポーズのコピーとペースト

いろいろ資料を参考にして、 ポーズのコピーとペーストを作ってみた。 正直、再帰って難しいです。 ここで使うんだ!というのが僕には上手く理解できません…(^^; 木になっているものはガンガン再帰使った方がいいのかなぁ。 と、ちょっとスクリプトを書く際…

映像でよくある表現をやってみる。

映画でよく見るこんな表現。 真似してみるとこんな感じ。 明らかに量が足りていませんが、 増やして、歌っている動画のバリューマップ的なものがあればこれが表現できます。 最近は、リグにパーティクルを仕込む…というのに興味があります。 リグってなんで…

index?ってなんじゃい。

今更ながらindexが何かを知りました…。 BlendShapeでIn-Betweenのモデルを追加する際に Target indexっていう項目がありそこにTargetのindexを入れます。 まぁBlendShapeを適用した順だろう!というのはわかったんですけど、 0からスタートなのか、 1からス…

joint ノードについて

最近、DependecyGraphを辿る機会が多くなりました。 DependecyGraphに関しては語ると長くなるので語らない… というより僕がよくわかっていません(笑) なんとなーく、迷子ちゃんの集まりなんだろう!で片づけました。 さて、今更ですがMayaのjointノードにつ…

信じられないOpenMaya(Python)

MScriptUtil Pythonにはポインターやらデータ型とかは特になかったり。 なのでMScriptUtilってのでそれを作ってあげなきゃいけないみたいです。 最後のgetDouble()は引数にポインターを入れてねとか言ってくる。 というか試してみたほとんどがポインターを入…