移動先: 概要 戻り値 フラグ Python の例
surface([degreeU=int], [degreeV=int], [formU=string], [formV=string], [knotU=float], [knotV=float], [point=[linear, linear, linear]], [pointWeight=[linear, linear, linear, linear]])
注意: オブジェクト名や引数を表す文字列はカンマで区切ります。これは概要には示されていません。
surface は「元に戻す」が可能、「照会」が不可能、「編集」が不可能です。
このコマンドは、有理または非有理の NURBS スプライン サーフェスを作成します。
サーフェスは、U 方向と V 方向の CV および
ノット サーフェスを指定して作成されます。このコマンドでは、
サーフェスのプロパティを照会することはできません。下記の例を参照してください。
degreeU, degreeV, formU, formV, knotU, knotV, point, pointWeight
ロング ネーム(ショート ネーム) |
引数型 |
プロパティ |
degreeU(du)
|
int
|
|
|
U 方向のサーフェスの次数です。デフォルトは 3 です。
|
|
degreeV(dv)
|
int
|
|
|
V 方向のサーフェスの次数です。デフォルトは 3 です。
|
|
knotU(ku)
|
float
|

|
|
U 方向のノット値です。ノット値ごとに 1 フラグ。(numberOfPointsInU + degreeInU - 1)個のノットが必要で、
ノット ベクトルは非減少型である必要があります。
|
|
knotV(kv)
|
float
|

|
|
V 方向のノット値です。ノット値ごとに 1 フラグ。(numberOfPointsInV + degreeInV - 1)個のノットが必要で、
ノット ベクトルは非減少型である必要があります。
|
|
formU(fu)
|
string
|
|
|
U の状態。開いている場合は「open」、閉じている場合は「closed」、
周期的な場合は「periodic」です。
|
|
formV(fv)
|
string
|
|
|
V の状態。開いている場合は「open」、閉じている場合は「closed」、
周期的な場合は「periodic」です。
|
|
point(p)
|
[linear, linear, linear]
|

|
|
非有理 CVを X、Y、Z 値で指定します。「linear」は、このフラグで
単位を伴う値を取ることができることを意味します。可視サーフェスのスパンを作成するには、いずれの方向でも
次数に 1 を加えたサーフェス ポイントを指定する必要があります。
たとえば、サーフェスが U 方向に次数 3 である場合は、
U 方向に 4 つの CV を指定する必要があります。
ポイントは、U 行 V 列で指定されます。単位を組み込むには、単位名を値に付けます。例:
"-p 3.3in 5.5ft 6.6yd"
|
|
pointWeight(pw)
|
[linear, linear, linear, linear]
|

|
|
有理 CV を X、Y、Z、W 値で指定します。「linear」は、このフラグで
単位を伴う値を取ることができることを意味します。可視サーフェスのスパンを作成するには、いずれの方向でも
次数に 1 を加えたサーフェス ポイントを指定する必要があります。
たとえば、サーフェスが U 方向に次数 3 である場合は、
U 方向に 4 つの CV を指定する必要があります。
ポイントは、U 行 V 列で指定されます。
|
|
: コマンドの作成モードで使用可能なフラグ
|
: コマンドの編集モードで使用可能なフラグ
|
: コマンドの照会モードで使用可能なフラグ
|
: タプルまたはリストとして渡された複数の引数を持てるフラグ
|
import maya.cmds as cmds
# This following command produces a flat, rectangular surface that is degree 3
# in both directions. This means that there must be at least 4 x 4
# points to define the surface, since 4 is the (degree + 1). There
# must be 6 knots in each direction, because the knot vector must
# be (number of points + degree - 1), ie. (4 points + degree 3 - 1).
# The CVs are specified in rows of U and columns of V, as you
# would read a book from left to right, up to down. ie. in this order:
# surface.cv[0][0] surface.cv[0][1] surface.cv[0][2] surface.cv[0][3]
# surface.cv[1][0] surface.cv[1][1] surface.cv[1][2] surface.cv[1][3]
# surface.cv[2][0] surface.cv[2][1] surface.cv[2][2] surface.cv[2][3]
# surface.cv[3][0] surface.cv[3][1] surface.cv[3][2] surface.cv[3][3]
cmds.surface( du=3, dv=3, ku=(0, 0, 0, 1, 1, 1), kv=(0, 0, 0, 1, 1, 1), p=((-0.5, 0, 0.5), (-0.5, 0, 0.16), (-0.5, 0, -0.16), (-0.5, 0, -0.5), (-0.16, 0, 0.5), (-0.16, 0, 0.16), (-0.16, 0, -0.16), (-0.16, 0, -0.5), (0.16, 0, 0.5), (0.16, 0, 0.16), (0.16, 0, -0.16), (0.16, 0, -0.5), (0.5, 0, 0.5), (0.5, 0, 0.16), (0.5, 0, -0.16), (0.1, 0, -0.1)) )
# This following command produces a surface that is degree 3 and periodic in
# the U direction, and degree 1 in the V direction. Notice that
# the first 3 pairs of points match the last 3 pairs of
# points, which is required for a degree 3 periodic surface.
cmds.surface( du=3, dv=1, fu='periodic', fv='open', ku=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), kv=(0, 1), pw=((4, -4, 0, 1), (4, -4, -2.5, 1), (5.5, 0, 0, 1), (5.5, 0, -2.5, 1), (4, 4, 0, 1), (4, 4, -2.5, 1), (0, 5.5, 0, 1), (0, 5.5, -2.5, 1), (-4, 4, 0, 1), (-4, 4, -2.5, 1), (-5.5, 0, 0, 1), (-5.5, 0, -2.5, 1), (-4, -4, 0, 1), (-4, -4, -2.5, 1), (0, -5.5, 0, 1), (0, -5.5, -2.5, 1), (4, -4, 0, 1), (4, -4, -2.5, 1), (5.5, 0, 0, 1), (5.5, 0, -2.5, 1), (4, 4, 0, 1), (4, 4, -2.5, 1)) )
# This following command produces a surface that is degree 5 in both directions.
cmds.surface( du=5, dv=5, fu='open', fv='open', p=((-7, 0, 1), (-6, 0, 4), (-3, 0, 6), (0, 0, 7), (4, 0, 5), (6, 0, 3), (-7, 2, 1), (-6, 2, 4), (-3, 2, 7), (0, 2, 8), (4, 2, 5), (6, 2, 3), (-7, 3, 1), (-6, 3, 4), (-3, 3, 8), (0, 3, 9), (4, 3, 5), (6, 3, 3), (-7, 4, 1), (-6, 4, 4), (-3, 4, 9), (0, 4, 8), (4, 4, 5), (6, 4, 3), (-7, 5, 1), (-6, 5, 4), (-3, 5, 8), (0, 5, 7.5), (4, 5, 5), (6, 5, 3), (-7, 6, 1), (-6, 6, 4), (-3, 6, 6), (0, 6, 7), (4, 6, 5), (6, 6, 3)), ku=(0, 0, 0, 0, 0, 1, 1, 1, 1, 1), kv=(0, 0, 0, 0, 0, 1, 1, 1, 1, 1) )
# How to query surface properties:
cmds.getAttr( 'surface1.degreeU' )
# Returns an integer that is the surface degree in U
cmds.getAttr( 'surface1.degreeV' )
# Returns an integer that is the surface degree in V
cmds.getAttr( 'surface1.spansU' )
# Returns an integer that is the # spans in U
cmds.getAttr( 'surface1.spansV' )
# Returns an integer that is the # spans in V
cmds.getAttr( 'surface1.formU' )
# Return 0 = open, 1 = closed, 2 = periodic
cmds.getAttr( 'surface1.formV' )
# Returns 0 = open, 1 = closed, 2 = periodic
cmds.getAttr( 'surface1.minValueU' )
cmds.getAttr( 'surface1.maxValueU' )
cmds.getAttr( 'surface1.minValueV' )
cmds.getAttr( 'surface1.maxValueV' )
# These return the minimum and maximum parameter ranges in each direction.
cmds.getAttr( 'surface1.cv[0][0]' )
# Returns the position of a CV of surface1 in local space. If the
# surface is a result of construction history, use a surface info
# node instead to get the CV position.
cmds.getAttr( 'surface1.cv[*][0]' )
# Returns the positions of a row of CVs of surface1 in local space.
# If the surface is a result of construction history, use a surface info
# node instead to get the CV positions.
cmds.createNode( 'surfaceInfo' )
cmds.connectAttr( 'surfaceShape1.worldSpace', 'surfaceInfo1.inputSurface', f=True )
cmds.getAttr( 'surfaceInfo1.controlPoints[*]' )
# Returns the surface CVs in world space. A surface info node can
# also be used to query the surface knot vectors.