hou.CopNode.layerを介してCOPにジオメトリを要求すると、 そのCOPがクックされ、読み込み専用のhou.ImageLayerが取得されます。 SOPやGeometryオブジェクトとは異なり、その結果はもはやCOPノードに紐づいていないため、そのCOPを再クックしたり削除しも、その結果は変わりません。
ImageLayerを編集したいのであれば、hou.ImageLayer.freezeをコールしてください。 これは、独立した書き込み可能なコピーである別のImageLayerオブジェクトを返します。 フリーズされたレイヤへの書き込みは、以前の読み込み専用バージョンには影響しません。
メソッド ¶
close()
このオブジェクトを空っぽのオブジェクトにリセットします。
これによって、大元のImageLayerデータの参照が解放されます。
このオブジェクトは、スコープを抜けてガベージコレクションされる際にも同様にリセットされますが、close()を使用することで、そのタイミングを正確に制御することができます。
ImageLayerはPythonのコンテキストマネージャにも対応しているので、withステートメントを使用することで、withブロックの終了時にImageLayerを自動で閉じることができます。
storageType()
→ hou.imageLayerStorageTypeの列挙値
レイヤのストレージタイプを返します。 このストレージタイプは、データの精度、浮動小数点または整数のどれかの型で構成されています。
typeInfo()
→ hou.imageLayerTypeInfoの列挙値
レイヤのセマンティックタイプを返します。 これは、自動可視化などの用途に使用されます。
setStorageType(storagetype)
レイヤのストレージタイプを変更します。 既存のデータは失われます。
書き込み可能なレイヤが必要です。
setBorder(storagetype)
レイヤの境界を変更します。
書き込み可能なレイヤが必要です。
setTypeInfo(storagetype)
レイヤのセマンティックタイプを変更します。
書き込み可能なレイヤが必要です。
channelCount()
→ int
レイヤ内のチャンネルの数を返します。
setChannelCount(chan)
レイヤ内のチャンネルの数を変更します。 既存のデータは失われます。 指定する数は、1から4まででなければなりません。
書き込み可能なレイヤが必要です。
bufferResolution()
→ タプルint
大元のバッファサイズを返します。
これは、X方向およびY方向のデータエレメントの数です。
ピクセルスケールが1の場合、これはピクセル数に相当します。
onCPU()
→ bool
ImageLayerは、CPUまたはGPUのどちらにも格納することができます。 CPU上に格納されている場合、これはTrueとなります。
onGPU()
→ bool
ImageLayerは、CPUまたはGPUのどちらにも格納することができます。 GPU上に格納されている場合、これはTrueとなります。
isConstant()
→ bool
レイヤが単一定数値で圧縮されている場合はTrueを返します。
Note
これは、レイヤが単一定数値に圧縮されているかどうかを検出するだけなので、 すべての値が同じレイヤであっても必ずしもTrueを返すとは限りません。
makeConstant(val)
レイヤを、指定した値の単一定数値に圧縮します。
valueにはタプルを指定します。
このタプルの要素数が足りなければ自動で必要なチャンネル数まで拡張されます。
書き込み可能なレイヤが必要です。
expandConstant()
定数レイヤを、すべてのピクセルデータを持つ密レイヤに展開します。
書き込み可能なレイヤが必要です。
storesIntegers()
→ bool
レイヤが整数データを保持している場合はTrueを返します。
dataWindow()
→ hou.BoundingRect
データウィンドウを返します。 これは、バッファエレメントが網羅する領域(ピクセル単位)です。
displayWindow()
→ hou.BoundingRect
ディスプレイウィンドウを返します。 これは、画像空間に収まる領域(ピクセル単位)です。
pixelAspectRatio()
→ float
画像空間座標とピクセル座標の比率。
pixelScale()
→ tuple of float
ピクセル値と大元のバッファエレメントとのスケール係数。
これは、各次元において1つのバッファエレメントに収まるピクセル数です。
したがって、(2,2)は、2×2ピクセルブロック毎に1つのバッファエレメントが作成されます。
setDataWindow(x, y, w, h)
指定したピクセル範囲を網羅するバッファを設定します。
バッファの実際のサイズは、ピクセルスケールに応じて変化します。
ピクセルスケールが1の場合、wとhは解像度になります。
既存のデータは失われます。
これには書き込み可能なレイヤが必要です。
setDisplayWindow(x, y, w, h)
画像空間変換によって収まるピクセル領域を設定します。
これには書き込み可能なレイヤが必要です。
setPixelAspectRatio(aspect)
ピクセル空間と画像空間の比率を設定します。
これには書き込み可能なレイヤが必要です。
setPixelScale(scale)
バッファ空間とピクセル空間とのスケーリングを設定します。
これには書き込み可能なレイヤが必要です。
projection()
→ hou.imageLayerProjection
レイヤの暗黙的なカメラによって実行される投影方式を返します。
aperture()
→ float
カメラの絞り幅を返します。
単位は名目上mmですが、最も重要なのはfocalLengthと同じ単位であることです。
focalLength()
→ float
カメラの焦点距離を返します。
単位は名目上mm ですが、最も重要なのはapertureと同じ単位であることです。
cameraPosition()
→ tuple of float
画像空間の中心から測定したカメラの投影点の位置。
fStop()
→ float
カメラのF値。
clippingRange()
→ tuple of float
レイヤのカメラのクリッピング範囲。
focusDistance()
→ float
カメラの焦点面の位置。
shutter()
→ tuple of float
カメラのシャッターの開放時間。 これは、公称ゼロ点を基準として測定されます。
setProjection(projection)
カメラの投影方式を変更します。
setAperture(aperture)
カメラの絞りを設定します。
setFocalLength(focal)
カメラの焦点距離を設定します。
setCameraPosition(pos)
レイヤの画像空間において測定されたカメラの焦点位置を調整します。
setFStop(fstop)
カメラのF値を設定します。
setClippingRange(range)
カメラのニア/ファーのクリッピング範囲を設定します。
setFocusDistance(focus)
カメラの焦点距離を設定します。
setShutter(shutter)
カメラのシャッターを設定します。
projectionTransform()
→ hou.Matrix4
ワールド空間から画像空間への(カメラの投影を含む)トランスフォームを計算します。
imageToWorldTransform()
→ hou.Matrix4
画像空間からワールド空間への非射影トランスフォームを計算します。
imageToPixelScale()
→ tuple of float
画像空間からピクセル空間へのスケール係数を返します。
imageToPixelTranslate()
→ tuple of float
画像空間からピクセル空間へのオフセットを返します。
imageToBufferScale()
→ tuple of float
画像空間からバッファ空間へのスケール係数を返します。
imageToBufferTranslate()
→ tuple of float
画像空間からバッファ空間へのオフセットを返します。
bufferToPixelScale()
→ tuple of float
バッファ空間からピクセル空間へのスケール係数を返します。
bufferToPixelTranslate()
→ tuple of float
バッファ空間からピクセル空間へのオフセットを返します。
textureToBufferScale()
→ tuple of float
テクスチャ空間からバッファ空間へのスケール係数を返します。
imageToPixel(p)
→ tuple of float
2タプルを画像空間からピクセル空間に変換します。
imageToBuffer(p)
→ tuple of float
2タプルを画像空間からバッファ空間に変換します。
imageToTexture(p)
→ tuple of float
2タプルを画像空間からテクスチャ空間に変換します。
pixelToImage(p)
→ tuple of float
2タプルをピクセル空間から画像空間に変換します。
pixelToBuffer(p)
→ tuple of float
2タプルをピクセル空間からバッファ空間に変換します。
pixelToTexture(p)
→ tuple of float
2タプルをピクセル空間からテクスチャ空間に変換します。
bufferToPixel(p)
→ tuple of float
2タプルをバッファ空間からピクセル空間に変換します。
bufferToImage(p)
→ tuple of float
2タプルをバッファ空間から画像空間に変換します。
bufferToTexture(p)
→ tuple of float
2タプルをバッファ空間からテクスチャ空間に変換します。
textureToPixel(p)
→ tuple of float
2タプルをテクスチャ空間からピクセル空間に変換します。
textureToImage(p)
→ tuple of float
2タプルをテクスチャ空間から画像空間に変換します。
textureToBuffer(p)
→ tuple of float
2タプルをテクスチャ空間からバッファ空間に変換します。
worldToBuffer(p)
→ tuple of float
3タプルをワールド空間からバッファ空間に変換します。
bufferIndexV4(int x, int y)
→ tuple of float
バッファ座標(x, y)におけるレイヤのRGBA値を返します。
bufferIndexI(int x, int y)
→ int
バッファ座標(x, y)におけるレイヤの整数値を返します。
bufferIndex(int x, int y)
→ tuple of float
| float
| int
バッファ座標(x, y)におけるレイヤの値を返します。 戻り値の型はレイヤの型に呼応しており、例えば、Monoレイヤの場合は単一浮動小数点値を返します。
bufferIndexRaw(int x, int y)
→ bytes
バッファ座標(x, y)におけるレイヤのRawバイトを返します。
freeze()
→ hou.ImageLayer
このレイヤの書き込み可能なコピーを作成して、それを返します。
Note
実際のバッファの複製は、書き込みが行なわれるまで実行されません。
isFrozen()
→ bool
このレイヤがフリーズされているかどうかを返します。 Falseの場合、このレイヤは書き込み不可です。
attributes()
→ dict
このレイヤに存在するレイヤアトリビュートを返します。
setAttributes(p)
レイヤのアトリビュートを、指定した辞書の内容で置き換えます。
updateAttributes(p)
指定した辞書を用いてレイヤアトリビュートを更新し、マッチしたキーを置換します。
allBufferElements()
→ hou.BinaryString
すべてのバッファエレメントをバイナリ文字列として返します。
このバイナリ文字列は、numpyやtensorといったパッケージで効率的に再解釈して処理することができます。
バッファエレメントの数は、bufferResolutionと同じです。
ビット深度とチャンネル数は、レイヤの現在の値が使用されます。
allBufferElements(storagetype, channels)
→ hou.BinaryString
すべてのバッファエレメントをバイナリ文字列として返します。
このバイナリ文字列は、numpyやtensorといったパッケージで効率的に再解釈して処理することができます。
バッファエレメントの数は、bufferResolutionと同じです。
返されるビット深度とチャンネル数は、指定されたものと一致しますが、内部レイアウトと異なる場合は必要に応じて変換が行なわれます。
setAllBufferElements(values, length, storagetype, channels)
valuesに格納されたバイナリ文字列を受け取って、このレイヤのすべてのバッファエレメントをそのバイナリ文字列に置き換えます。
そのバイナリ文字列は、エレメント数がbufferResolutionと一致していて、且つ、指定したstoragetypeおよびchannelsの形式でなければなりません。
書き込み可能なレイヤが必要です。
setAllBufferElements(values, length)
valuesに格納されたバイナリ文字列を受け取って、このレイヤのすべてのバッファエレメントをそのバイナリ文字列に置き換えます。
そのバイナリ文字列は、エレメント数がbufferResolutionと一致していて、且つ、このレイヤと同じstoragetypeおよびchannelsの形式でなければなりません。