2016/09/02
2016/08/28
[Maya]OpenMayaでNurbsCurve作成2
api1.0使用
ポイント位置のリストを受け取りカーブを作成
選択がTransformを継承しているオブジェクトだったらその下に、そうでなければ新しいオブジェクトを作ってその下にカーブシェイプを作る
ポイント位置のリストを受け取りカーブを作成
選択がTransformを継承しているオブジェクトだったらその下に、そうでなければ新しいオブジェクトを作ってその下にカーブシェイプを作る
import maya.OpenMaya as om
pntPoss = [
(0, 0, -1.0),
(-1, 0, 0.5),
(1, -0, 0.5),
(0, 0, -1.0),
]
def getMPoints(pntPoss):
pnts = om.MPointArray()
for pntPos in pntPoss:
pnts.append(om.MPoint(*pntPos))
return pnts
def getSelection():
sl = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sl)
if not sl.length():
return
dagPath = om.MDagPath()
sl.getDagPath(0, dagPath)
if not dagPath.hasFn(om.MFn.kTransform):
return
node = dagPath.node()
return node
def createCurve(pntPoss):
crv = om.MFnNurbsCurve()
pnts = getMPoints(pntPoss)
deg = 1
span = pnts.length() - deg
knotCnt = span + 2 * deg -1
knots = om.MDoubleArray()
for i in range(knotCnt):
knots.append(i)
sl = getSelection()
if not sl:
sl = om.MObject()
crv.create(pnts, knots, deg, om.MFnNurbsCurve.kOpen, False, False, sl)
createCurve(pntPoss)
2016/08/24
2016/08/23
[Maya]OpenMayaでカーブのポイントを取得
api2.0(2016以降)
import maya.api.OpenMaya as om2
def main():
sl = om2.MGlobal.getActiveSelectionList()
dagPath = sl.getDagPath(0)
try:
dagPath.extendToShape()
except:
return
if not dagPath.hasFn(om.MFn.kNurbsCurve):
return
crv = om.MFnNurbsCurve(dagPath)
pnts = fn_crv.cvPositions()
for pnt in pnts:
print pnt
main()
api1.0
import maya.OpenMaya as om
util = om.MScriptUtil()
def main():
sl = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sl)
dagPath = om.MDagPath()
sl.getDagPath(0, dagPath)
try:
dagPath.extendToShape()
except: return
if not dagPath.hasFn(om.MFn.kNurbsCurve):
return
crv = om.MFnNurbsCurve(dagPath)
pnts = om.MPointArray()
crv.getCVs(pnts)
for i in range(pnts.length()):
pnt = pnts[i]
print pnt.x, pnt.y, pnt.z
main()
[Maya]OpenMayaでNurbsCurve
2016以降(api2.0使用)
import maya.api.OpenMaya as om
curveFn = om.MFnNurbsCurve()
deg = 1
vts = om.MPointArray()
vts.append( om.MPoint(1,0,-1) )
vts.append( om.MPoint(-1,0,-1) )
vts.append( om.MPoint(-1,0,1) )
vts.append( om.MPoint(1,0,1) )
vts.append( om.MPoint(1,0,-1) )
span = len(vts) - deg
nknots = span + 2*deg - 1
knots = om.MDoubleArray()
for i in xrange(nknots):
knots.append(i)
sl = om.MGlobal.getActiveSelectionList()
dagPath = sl.getDagPath(0)
node = dagPath.node()
curve = curveFn.create( vts, knots, deg, om.MFnNurbsCurve.kOpen, False, False, node)
2015以前
import maya.OpenMaya as om
curveFn = om.MFnNurbsCurve()
deg = 1
vts = om.MPointArray()
vts.append( om.MPoint(1,0,-1) )
vts.append( om.MPoint(-1,0,-1) )
vts.append( om.MPoint(-1,0,1) )
vts.append( om.MPoint(1,0,1) )
vts.append( om.MPoint(1,0,-1) )
span = vts.length() - deg
nknots = span + 2*deg - 1
knots = om.MDoubleArray()
for i in xrange(nknots):
knots.append(i)
sl = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sl)
dagPath = om.MDagPath()
sl.getDagPath(0, dagPath)
node = dagPath.node()
curve = curveFn.create( vts, knots, deg, om.MFnNurbsCurve.kOpen, False, False, node)
import maya.api.OpenMaya as om
curveFn = om.MFnNurbsCurve()
deg = 1
vts = om.MPointArray()
vts.append( om.MPoint(1,0,-1) )
vts.append( om.MPoint(-1,0,-1) )
vts.append( om.MPoint(-1,0,1) )
vts.append( om.MPoint(1,0,1) )
vts.append( om.MPoint(1,0,-1) )
span = len(vts) - deg
nknots = span + 2*deg - 1
knots = om.MDoubleArray()
for i in xrange(nknots):
knots.append(i)
sl = om.MGlobal.getActiveSelectionList()
dagPath = sl.getDagPath(0)
node = dagPath.node()
curve = curveFn.create( vts, knots, deg, om.MFnNurbsCurve.kOpen, False, False, node)
2015以前
import maya.OpenMaya as om
curveFn = om.MFnNurbsCurve()
deg = 1
vts = om.MPointArray()
vts.append( om.MPoint(1,0,-1) )
vts.append( om.MPoint(-1,0,-1) )
vts.append( om.MPoint(-1,0,1) )
vts.append( om.MPoint(1,0,1) )
vts.append( om.MPoint(1,0,-1) )
span = vts.length() - deg
nknots = span + 2*deg - 1
knots = om.MDoubleArray()
for i in xrange(nknots):
knots.append(i)
sl = om.MSelectionList()
om.MGlobal.getActiveSelectionList(sl)
dagPath = om.MDagPath()
sl.getDagPath(0, dagPath)
node = dagPath.node()
curve = curveFn.create( vts, knots, deg, om.MFnNurbsCurve.kOpen, False, False, node)
2015/10/27
2015/10/16
登録:
投稿 (Atom)