Skip to content

Instantly share code, notes, and snippets.

@taikomatsu
taikomatsu / fieldAttenuationApprox.txt
Last active August 29, 2015 13:56
Maya Field attenuation parameter approximation
// Maya Field attenuation parameter approximation
vector $p = particleShape1.position;
float $d = mag($p);
float $f = pow(1.0/($d+1.0), particleShape1.attenuation) * particleShape1.magnitude;
particleShape1.acceleration = <<0, $f, 0>>;
@taikomatsu
taikomatsu / gat_MDagPath_from_object_name.py
Last active January 10, 2017 14:07
Get MDagPath from object name
from maya import OpenMaya
import pymel.core as pm
def mdagpath_from_name(name):
if not pm.objExists(name):
raise MayaNodeError, name
slist = OpenMaya.MSelectionList()
slist.add(name)
dagpath = OpenMaya.MDagPath()
slist.getDagPath(0, dagpath)
@taikomatsu
taikomatsu / stick_points_to_mesh.py
Last active January 10, 2017 14:08
Stick points to closest point on a specified mesh
from maya import OpenMaya
import pymel.core as pm
def mdagpath_from_name(name, extend_to_shape=False):
if not pm.objExists(name):
raise MayaNodeError, name
slist = OpenMaya.MSelectionList()
slist.add(name)
dagpath = OpenMaya.MDagPath()
slist.getDagPath(0, dagpath)
@taikomatsu
taikomatsu / gist:4bf29bf8dfcc45db409b
Created June 5, 2015 09:47
Open current working directory
from pymel.core import *
import os
import os.path
path, file = os.path.split(sceneName())
path = os.path.dirname(path).replace('/', '\\')
os.popen('explorer "%s"' % path)
# -- 5行目の注釈
# Windowsのコマンドプロンプトでexplorerを開く際はパスの区切りがスラッシュだとだめなのでバックスラッシュに直す。
# 通常であればos.path.normpath(os.path.dirname(path))で変更したいところだが、Mayaの場合Windowsでも/を返す為今回は自分で修正。
@taikomatsu
taikomatsu / gist:a57407ddbae0c48f1d4a
Created June 15, 2015 06:32
Make particles from selected mesh vertices
# make particles from selected mesh vertices
from pymel.core import *
vtxs = [PyNode(o) for o in filterExpand('%s.vtx[*]' % selected()[0].name(), sm=31)]
points = []
for o in vtxs:
points.append(o.getPosition())
particle(p=points, c=1)
print('# done')
from maya import OpenMaya
from pymel.core import *
def mdagpath_from_name(name, extend_to_shape=False):
if not objExists(name):
raise MayaNodeError, name
slist = OpenMaya.MSelectionList()
slist.add(name)
dagpath = OpenMaya.MDagPath()
slist.getDagPath(0, dagpath)
@taikomatsu
taikomatsu / gist:99d34488eebe0225510f
Created June 22, 2015 07:25
Stick to closest uv
from maya import OpenMaya
from pymel.core import *
import math
class UvCoord(object):
def __init__(self, u, v):
self.u = u
self.v = v
def dist(self, uv):
@taikomatsu
taikomatsu / gist:98f77bf067bb9bfd4ffd
Last active August 29, 2015 14:23
Render sequence on Render View
# 何らかの理由でbatchレンダリングがうまくいかない、Maya HWだと何故かレンダリングが遅い、みたいなときに便利なスクリプト
# 連番をRender View上でレンダリングします
# Progress window付きでキャンセルすることが可能ですが、なぜかRender Viewの下に隠れてしまうので上手いことやらないとキャンセル出来ないので要注意
from pymel.core import *
from maya import mel
import math
preroll_start = None
s = int(playbackOptions(q=True, min=True)) # start frame
e = int(playbackOptions(q=True, max=True)) # end frame
@taikomatsu
taikomatsu / gist:6fd0a4700098829acc19
Created June 24, 2015 16:33
Generate batch render commands
# レンダリング用コマンドライン自動生成
# render_nodesを複数にするとフレームを分割してコマンドをprintする
# フレームの分割がたまにミスるのはご愛嬌(放置中)
from pymel.core import *
# settings
tmpl = '"%(render_path)s" -r %(renderer)s %(frame_range)s -proj "%(proj)s" "%(scene)s"'
render_path = r'C:\Program Files\Autodesk\Maya2014\bin\Render'
renderer = 'mr'
platform = 'win'
@taikomatsu
taikomatsu / gist:f599afaa1edf0dfc70af
Last active August 29, 2015 14:23
Copy a playbast movie file from tmp directory
# Playblastをした後にその動画が保存したくなった場合にblast_nameに動画の名前(名前のみでOK)を入力すると
# TMPから勝手に引っ張ってきてcurrent_project/moviesにコピーします
# ムービーの名前はPlayblastが終わった直後、パスが表示されるのでそれを見て手動で入力してください
# UIあるととても便利でしたね(放置中)
# copy blast from tmp
from pymel.core import *
import os
import os.path
import shutil