## MQObject class

頂点と面からなるオブジェクト情報を管理します。

### Property

get | set | Type | Name | Description
--- | --- | --- | --- | ---
o | o | string | name | オブジェクト名
o | x | long | id | オブジェクトを識別するユニークID
o | o | string | typeName | オブジェクトの種類
[Object] | ポリゴンオブジェクト
[PointLight] | 点光源
[DirLight] | 平行光源
o | x | int | numVertex | 頂点数
o | x | int | numFace | 面数
o | x | list<MQVertex> | vertex | 頂点のリスト
o | x | list<MQFace> | face | 面のリスト
o | o | int | visible | オブジェクトの表示・非表示
[0] | 非表示
[1] | 表示
o | o | int | lock | オブジェクトの固定
[0] | 無効
[1] | 固定
o | o | int | select | オブジェクトの選択状態
[0] | 選択されていない
[1] | 選択されている
o | o | MQColor | color | 頂点・辺の表示色
o | o | int | colorValid | colorの値が有効かどうか
[0] | 無効
[1] | 有効
o | o | int | shading | シェーディングの種類
[0] | フラットシェーディング
[1] | スムースシェーディング
o | o | float | smoothAngle | スムージング角度 [0:180]
o | o | int | patchType | 曲面タイプ
[0] | なし
[1] | スプライン曲面タイプ1
[2] | スプライン曲面タイプ2
[3] | Catmull-Clark曲面
[4] | OpenSubdiv曲面
o | o | int | patchSegment | 曲面分割数
o | o | int | patchTriangle | Catmull-Clark曲面での三角形の分割方法
[0] | 四角形に分割
[1] | 三角形に分割
o | o | int | patchSmoothTriangle | OpenSubdiv曲面での三角形のスムージング方法
[0] | スムージングを行わない
[1] | スムージングを行う
o | o | int | patchLimitSurface | OpenSubdiv曲面での極限サーフェス
[0] | 極限サーフェスを適用しない
[1] | 極限サーフェスを適用する
o | o | int | patchMeshInterp | OpenSubdiv曲面での開いた面の境界の補間方法
[1] | エッジのみ
[2] | エッジと角
o | o | int | patchUVInterp | OpenSubdiv曲面での開いたUVの境界の境界の補間方法
[0] | すべて
[1] | なし
[2] | 角+1
[3] | 境界
[4] | 角のみ
[5] | 角+2
o | o | int | mirrorType | 鏡面のタイプ
[0] | なし
[1] | 中心で分離した鏡面
[2] | 中心をつなぐ鏡面
o | o | int | mirrorAxisX | X軸で鏡像生成
[0] | なし
[1] | 有効
o | o | int | mirrorAxisY | Y軸で鏡像生成
[0] | なし
[1] | 有効
o | o | int | mirrorAxisZ | Z軸で鏡像生成
[0] | なし
[1] | 有効
o | o | int | mirrorAxisLocal | ローカル軸に対する鏡像生成
[0] | グローバル座標
[1] | ローカル座標
o | o | float | mirrorDistance | 中心をつなぐ鏡像生成の適用距離
o | o | int | latheType | 回転体のタイプ
[0] | なし
[1] | 表面
[2] | 裏面
[3] | 両面
o | o | int | latheAxis | 回転体の回転軸
[0] | X
[1] | Y
[2] | Z
o | o | int | latheSegment | 回転体の分割数
o | o | int | depth | 階層の深さ（ルート直下の場合0）
o | o | int | folding | 階層の折りたたみ表示
o | o | MQPoint | scaling | ローカル座標の拡大率
o | o | MQAngle | rotation | ローカル座標の回転角
o | o | MQPoint | translation | ローカル座標の位置
o | o | float | lightValue | 光源の強度
o | o | int | lightAttenuation | 光源の減衰タイプ
[0] | なし
[1] | １次線形
[2] | ２乗
o | o | float | lightFalloffEnd | 光源の終了距離
o | o | float | lightFalloffHalf | 光源の半減距離
o | o | list<int> | uvChannels | UVチャンネルIDのリスト
o | x | int | activeUVChannel | アクティブなUVチャンネルID

### Method

Member | Description
--- | ---
clone | オブジェクトを複製します。
merge | ２つのオブジェクトを合成します。
freeze | 曲面や鏡面などの属性をフリーズします。
clear | 頂点・面をすべて削除します。
addVertex | 頂点を追加します。
addVertex | 頂点を追加します。
deleteVertex | 指定した頂点を削除します。
addFace | 指定した頂点を取り囲む面を追加します。
insertFace | 指定したインデックスに面を挿入します。
deleteFace | 指定した面を削除します。
invertFace | 面の向きを反転します。
optimizeVertex | 指定距離以下にある頂点を結合します。
compact | 頂点・面のインデックスを切り詰めます。
getVertexIndexFromUniqueID | ユニークIDから頂点のインデックスを取得します。
getFaceIndexFromUniqueID | ユニークIDから面のインデックスを取得します。
allocUserData | オブジェクトにユーザーデータ用の領域を確保します。
freeUserData | ユーザーデータ用領域を解放します。
getUserDataInt | オブジェクトユーザーデータからint型(4バイト)の値を取得します。
getUserDataFloat | オブジェクトユーザーデータからfloat型(4 bytes) の値を取得します。
getUserDataString | オブジェクトユーザーデータからstring型の文字列を取得します。
setUserDataInt | オブジェクトユーザーデータにint型(4バイト)の値を設定します。
setUserDataFloat | オブジェクトユーザーデータにfloat型(4バイト)の値を設定します。
setUserDataString | オブジェクトユーザーデータにstring型の文字列を設定します。
allocVertexUserData | 頂点ユーザーデータ用の領域を確保します。
freeVertexUserData | ユーザーデータ用領域を解放します。
getVertexUserDataInt | 頂点ユーザーデータからint型(4バイト)の値を取得します。
getVertexUserDataFloat | 頂点ユーザーデータからfloat型(4 bytes) の値を取得します。
getVertexUserDataString | 頂点ユーザーデータからstring型の文字列を取得します。
setVertexUserDataInt | 頂点ユーザーデータにint型(4バイト)の値を設定します。
setVertexUserDataFloat | 頂点ユーザーデータにfloat型(4バイト)の値を設定します。
setVertexUserDataString | 頂点ユーザーデータにstring型の文字列を設定します。
allocFaceUserData | 面ユーザーデータ用の領域を確保します。
freeFaceUserData | ユーザーデータ用領域を解放します。
getFaceUserDataInt | 面ユーザーデータからint型(4バイト)の値を取得します。
getFaceUserDataFloat | 面ユーザーデータからfloat型(4バイト)の値を取得します。
getFaceUserDataString | 面ユーザーデータからstring型の文字列を取得します。
setFaceUserDataInt | 面ユーザーデータにint型(4バイト)の値を設定します。
setFaceUserDataFloat | 面ユーザーデータにfloat型(4バイト)の値を設定します。
setFaceUserDataString | 面ユーザーデータにstring型の文字列を設定します。
activateUVChannel | UVチャンネルをアクティブ化します。
addUVChannel | UVチャンネルを追加します。
deleteUVChannel | UVチャンネルを削除します。

clone
オブジェクトを複製します。
  戻り値：
  MQObject | - | 複製されたオブジェクト

merge(source)
２つのオブジェクトを合成します。
  引数：
  MQObject | source | - | 合成元オブジェクト
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

freeze([flag])
曲面や鏡面などの属性をフリーズします。
  引数：
  int | flag | - | フラグ (組み合わせ) [1] 曲面 [2] 鏡面 [4] 回転体 [-1] すべて
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

clear
頂点・面をすべて削除します。

addVertex(point)
頂点を追加します。
  引数：
  MQPoint | point | - | 頂点の位置
  戻り値：
  int | - | 頂点のインデックス [-1] 追加失敗

addVertex(x, y, z)
頂点を追加します。
  引数：
  float | x | - | X座標
  float | y | - | Y座標
  float | z | - | Z座標
  戻り値：
  int | - | 頂点のインデックス [-1] 追加失敗

deleteVertex(index[, delete_face])
指定した頂点を削除します。
  引数：
  int | index | - | 削除する頂点のインデックス
  int | delete_face | - | 共有する面を削除するかどうか [0] 削除しない (デフォルト) [1] 削除する

addFace(list)
指定した頂点を取り囲む面を追加します。
  引数：
  list<int> | list | - | 頂点インデックスのリスト
  戻り値：
  int | - | 面のインデックス [-1] 追加失敗
  例： 次の例ではMQObject型のobjに平面を追加します。
      v = []
      v.append( obj.addVertex(0,0,0) )
      v.append( obj.addVertex(100,0,0) )
      v.append( obj.addVertex(100,100,0) )
      v.append( obj.addVertex(0,100,0) )
      obj.addFace(v)

insertFace(index, list)
指定したインデックスに面を挿入します。
  引数：
  int | index | - | 面のインデックス
  list<int> | list | - | 頂点インデックスのリスト
  戻り値：
  int | - | 面のインデックス [-1] 追加失敗

deleteFace(index[, delete_vertex])
指定した面を削除します。
  引数：
  int | index | - | 削除する面のインデックス
  int | delete_vertex | - | 他の面と共有しない頂点を削除するか [0] 削除しない (デフォルト) [1] 削除する

invertFace(index)
面の向きを反転します。
  引数：
  int | index | - | 面のインデックス

optimizeVertex(distance)
指定距離以下にある頂点を結合します。
  引数：
  float | distance | - | 距離

compact
頂点・面のインデックスを切り詰めます。

getVertexIndexFromUniqueID(id)
ユニークIDから頂点のインデックスを取得します。
  引数：
  long | id | - | 頂点のユニークID
  戻り値：
  int | - | 頂点のインデックス [-1] 取得失敗

getFaceIndexFromUniqueID(id)
ユニークIDから面のインデックスを取得します。
  引数：
  long | id | - | 面のユニークID
  戻り値：
  int | - | 面のインデックス [-1] 取得失敗

allocUserData(userdata_id)
オブジェクトにユーザーデータ用の領域を確保します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

freeUserData(userdata_id)
ユーザーデータ用領域を解放します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID

getUserDataInt(userdata_id, offset)
オブジェクトユーザーデータからint型(4バイト)の値を取得します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID
  int | offset | - | データの先頭からのオフセット
  戻り値：
  int | - | 値 [None] 取得失敗

getUserDataFloat(userdata_id, offset)
オブジェクトユーザーデータからfloat型(4 bytes) の値を取得します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID
  int | offset | - | データの先頭からのオフセット
  戻り値：
  float | - | 値 [None] 取得失敗

getUserDataString(userdata_id, offset, length)
オブジェクトユーザーデータからstring型の文字列を取得します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID
  int | offset | - | データの先頭からのオフセット
  int | length | - | データ長（バイト単位での文字列の最大長）
  戻り値：
  string | - | 値 [None] 取得失敗

setUserDataInt(userdata_id, offset, value)
オブジェクトユーザーデータにint型(4バイト)の値を設定します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID
  int | offset | - | データの先頭からのオフセット
  int | value | - | 値

setUserDataFloat(userdata_id, offset, value)
オブジェクトユーザーデータにfloat型(4バイト)の値を設定します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID
  int | offset | - | データの先頭からのオフセット
  float | value | - | 値

setUserDataString(userdata_id, offset, length, value)
オブジェクトユーザーデータにstring型の文字列を設定します。
  引数：
  int | userdata_id | - | オブジェクトユーザーデータID
  int | offset | - | データの先頭からのオフセット
  int | length | - | データ長（バイト単位での文字列の最大長）
  string | value | - | 値

allocVertexUserData(userdata_id)
頂点ユーザーデータ用の領域を確保します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

freeVertexUserData(userdata_id)
ユーザーデータ用領域を解放します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID

getVertexUserDataInt(userdata_id, index, offset)
頂点ユーザーデータからint型(4バイト)の値を取得します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID
  int | index | - | 頂点のインデックス
  int | offset | - | データの先頭からのオフセット
  戻り値：
  int | - | 値 [None] 取得失敗

getVertexUserDataFloat(userdata_id, index, offset)
頂点ユーザーデータからfloat型(4 bytes) の値を取得します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID
  int | index | - | 頂点のインデックス
  int | offset | - | データの先頭からのオフセット
  戻り値：
  float | - | 値 [None] 取得失敗

getVertexUserDataString(userdata_id, index, offset, length)
頂点ユーザーデータからstring型の文字列を取得します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID
  int | index | - | 頂点のインデックス
  int | offset | - | データの先頭からのオフセット
  int | length | - | データ長（バイト単位での文字列の最大長）
  戻り値：
  string | - | 値 [None] 取得失敗

setVertexUserDataInt(userdata_id, index, offset, value)
頂点ユーザーデータにint型(4バイト)の値を設定します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID
  int | index | - | 頂点のインデックス
  int | offset | - | データの先頭からのオフセット
  int | value | - | 値

setVertexUserDataFloat(userdata_id, index, offset, value)
頂点ユーザーデータにfloat型(4バイト)の値を設定します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID
  int | index | - | 頂点のインデックス
  int | offset | - | データの先頭からのオフセット
  float | value | - | 値

setVertexUserDataString(userdata_id, index, offset, length, value)
頂点ユーザーデータにstring型の文字列を設定します。
  引数：
  int | userdata_id | - | 頂点ユーザーデータID
  int | index | - | 頂点のインデックス
  int | offset | - | データの先頭からのオフセット
  int | length | - | データ長（バイト単位での文字列の最大長）
  string | value | - | 値

allocFaceUserData(userdata_id)
面ユーザーデータ用の領域を確保します。
  引数：
  int | userdata_id | - | 面ユーザーデータID
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

freeFaceUserData(userdata_id)
ユーザーデータ用領域を解放します。
  引数：
  int | userdata_id | - | 面ユーザーデータID

getFaceUserDataInt(userdata_id, index, offset)
面ユーザーデータからint型(4バイト)の値を取得します。
  引数：
  int | userdata_id | - | 面ユーザーデータID
  int | index | - | 面のインデックス
  int | offset | - | データの先頭からのオフセット
  戻り値：
  int | - | 値 [None] 取得失敗

getFaceUserDataFloat(userdata_id, index, offset)
面ユーザーデータからfloat型(4バイト)の値を取得します。
  引数：
  int | userdata_id | - | 面ユーザーデータID
  int | index | - | 面のインデックス
  int | offset | - | データの先頭からのオフセット
  戻り値：
  float | - | 値 [None] 取得失敗

getFaceUserDataString(userdata_id, index, offset, length)
面ユーザーデータからstring型の文字列を取得します。
  引数：
  int | userdata_id | - | 面ユーザーデータID
  int | index | - | 面のインデックス
  int | offset | - | データの先頭からのオフセット
  int | length | - | データ長（バイト単位での文字列の最大長）
  戻り値：
  string | - | 値 [None] 取得失敗

setFaceUserDataInt(userdata_id, index, offset, value)
面ユーザーデータにint型(4バイト)の値を設定します。
  引数：
  int | userdata_id | - | 面ユーザーデータID
  int | index | - | 面のインデックス
  int | offset | - | データの先頭からのオフセット
  int | value | - | 値

setFaceUserDataFloat(userdata_id, index, offset, value)
面ユーザーデータにfloat型(4バイト)の値を設定します。
  引数：
  int | userdata_id | - | 面ユーザーデータID
  int | index | - | 面のインデックス
  int | offset | - | データの先頭からのオフセット
  float | value | - | 値

setFaceUserDataString(userdata_id, index, offset, length, value)
面ユーザーデータにstring型の文字列を設定します。
  引数：
  int | userdata_id | - | 面ユーザーデータID
  int | index | - | 面のインデックス
  int | offset | - | データの先頭からのオフセット
  int | length | - | データ長（バイト単位での文字列の最大長）
  string | value | - | 値

activateUVChannel(channel)
UVチャンネルをアクティブ化します。
  引数：
  int | channel | - | UVチャンネルID [0] 標準UVチャンネル [!= 0] MQDocument.getUVChannelID()で生成・取得するID
  戻り値：
  int | - | UVチャンネルID [0] 存在しないUVチャンネル [1] 成功

addUVChannel(channel)
UVチャンネルを追加します。
  引数：
  int | channel | - | UVチャンネルID [!= 0] MQDocument.getUVChannelID()で生成・取得するID
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功

deleteUVChannel(channel)
UVチャンネルを削除します。
  引数：
  int | channel | - | UVチャンネルID
  戻り値：
  int | - | 結果 [0] 失敗 [1] 成功