アクティブ ビューポート情報、タイプ、および変換へのアクセス

次のグローバル変数とメソッドにより、3ds Max のビューポートにアクセスできます。

また、3ds Max 2013 で導入された ViewPanelManager コア インタフェースは、ビュー パネル管理機能、およびスプリッタ バーの配置とビューポートの設定をコントロールすることに関連のあるメソッドを各拡張のタイプに公開します。

ビューポート関連のシステム グローバル変数

3ds Max のビューポート関連のシステム グローバル変数は以下のとおりです。

viewport.numViews 

この 3ds Max システム グローバル変数には、現在のビューポート レイアウト内の 3D ビューポートの数が含まれています。

この変数は読み取り専用です。

この変数には、ビューポート レイアウト内のトラック ビュー、スケマティク ビュー、スクリプト リスナーなどの 2D ビューは反映されません。

たとえば、viewport.getLayout()#layout_4 を返し、この変数の値が 2 の場合 つのビューポートに 2D ビューが含まれていることがわかります。

3ds Max 2013 の前までは、MAXScript で 2D ビューポートにアクセスすることはできませんでした。3ds Max 2013 以降のビューポートは、特にトラック ビュー、スケマティク ビュー、シーン エクスプローラなどのいくつかの拡張タイプに設定することができます。詳細については、ViewPanelManager.SetExtendedView() メソッドを参照してください。

viewport.activeViewport 

この 3ds Max システム グローバル変数により、アクティブ ビューポートのインデックスを取得および設定できます。

現在のアクティブ ビューポートを 2D ビューに変更すると、この変数の値は 0 になります。

viewport.activeViewportID

アクティブ ビューポートの ID を取得および設定します。

3ds Max 2014 以降で使用可能です。

<integer>viewport.numViewEx [ viewPanelIndex:<view panel index> ]

ビューポートの数を返します。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

3ds Max 2014 以降で使用可能です。

<integer>viewport.activeViewportEx <viewportIndex> [ viewPanelIndex:<view panel index> ]

指定されたインデックス付きビューポートをアクティブにします。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

3ds Max 2014 以降で使用可能です。

ビューポート レイアウト

<view_layout_name>viewport.getLayout() 

ビューポート レイアウトを返します。可能なレイアウト名のリストについては、以下を参照してください。

<void>viewport.setLayout <view_layout_name> 

ビューポート レイアウトを設定します。このレイアウトでは、<view_layout_name> によってビューポート レイアウト設定を指定します。

レイアウトの設定の際に各ビューポート内に表示されるビューは、[カスタマイズ] (Customize) > [ビューポート設定](Viewport Configuration) > [レイアウト] (Layout)で行った設定セットに基づきます。

次に有効な <view_layout_name> 値の構文を示します。

# is the total number of viewports.
V = vertical split
H = horizontal split
L/R = left/right placement
T/B = top/bottom placement

有効な <view_layout_name> 値は以下のとおりです。

レイアウト (Layout) 名前 説明
#layout_1 1 つのビューポート
#layout_2v 2 つのビューポート、同じサイズの垂直分割
#layout_2h 2 つのビューポート、同じサイズの水平分割
#layout_2ht 2 つのビューポート、上が小さめの水平分割
#layout_2hb 2 つのビューポート、下が小さめの水平分割
#layout_3vl 3 つのビューポート、左に 2 つ、右に 1 つ
#layout_3vr 3 つのビューポート、左に 1 つ、右に 2 つ
#layout_3ht 3 つのビューポート、上に 2 つ、下に 1 つ
#layout_3hb 3 つのビューポート、上に 1 つ、下に 2 つ
#layout_4vl 4 つのビューポート、左に 3 つ、右に 1 つ
#layout_4vr 4 つのビューポート、左に 1 つ、右に 3 つ
#layout_4ht 4 つのビューポート、上に 3 つ、下に 1 つ
#layout_4hb 4 つのビューポート、上に 1 つ、下に 3 つ
#layout_4 4 つのビューポート、すべて同じサイズ

3ds Max 2013 以降、スプリッタ バーの実際の場所は MAXScript を使ってコントロールできます。詳細については、ViewPanelManager.SetSplitterBarPos() メソッドを参照してください。

<view_type_name>viewport.getType [ index:<integer>  viewPanelIndex:<int>] 

このメソッドは、指定したビューポートのタイプを返します。何も指定していない場合は、現在アクティブなビューポートを返します。

オプションの index: キーワード引数は、インデックスで指定されたビューポート、または現在アクティブなビューポート(viewport.activeViewport() で返される値と同じ)を指定します。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

<boolean>viewport.setType <view_type_name> 

このメソッドは、アクティブ ビューポートのビュー タイプを設定します。

ビュー タイプが設定された場合は True を、設定されなかった場合は False を返します。

有効な <view_type_name> 値は以下のとおりです。

#view_top トップ(Top)
#view_bottom ボトム(Bottom)
#view_right ライト(Right)
#view_left レフト(Left)
#view_front フロント(Front)
#view_back Back
#view_persp_user パース(Perspective)
#view_iso_user ユーザ(User)
#view_camera カメラ(Camera)
#view_spot ライト(Light)
#view_shape 形状
#view_grid グリッド

現在のビューポートが拡張ビューポート(例: スケマティク ビュー、アセット マネージャ、または スクリプト リスナー ビューポート)の場合、getType()undefined を返します。setType() によってカメラが指定されており、カメラが 1 つだけ選択されている条件が満たされていない場合は、使用するカメラを選択するためのダイアログ ボックスが表示されます。カメラがない場合は、「シーンにカメラがありません」という警告が表示されます。

viewport.getType は、#view_none の戻り値も取得できます。いずれのビューポートもフォーカスを保持しない場合、False が返されます。

viewport.setType #view_top -- set active viewport to Top view
--> true
viewport.getType() -- should return what you expect...
--> #view_top

3ds Max 2013 以降、ビューポートはトラック ビュー、スケマティク ビュー、またはシーン エクスプローラなどのいくつかの拡張タイプに設定することができます。詳細については、ViewPanelManager.SetExtendedView() メソッドを参照してください。

<index>viewport.GetID <viewportIndex> [ viewPanelIndex:<view panel index> ]

3ds Max 2009 以降では、インデックスで指定されたビューポートの ID を返します。ID は設定できません。

ビューポートを最大化すると、インデックスは必ず 1 になり、その ID は最大化されないときのインデックスに対応します。たとえば、インデックスが 4 の右下のビューポートを最大化すると、インデックスは 1 になりますが、ID は 4 のままになります。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

<void>viewport.ResetAllViews() 

このメソッドは、3ds Max のすべてのビューポートをリセットし、既定のレイアウトに戻します。

<node>getActiveCamera()

アクティブ ビューに関連付けられたカメラ ノードを返します。ビューがカメラ ビューではない場合は、undefined を返します。

<node>viewport.getCamera [ index:<integer> viewPanelIndex:<view panel index> ] 

アクティブ ビューに関連付けられたカメラ ノードを返します。ビューがカメラ ビューではない場合は、undefined を返します。

3ds Max 2009 以降では、オプションの index: キーワードが指定されている場合、アクティブ ビューポートのカメラの代わりにインデックス付きビューポートのカメラを返します。

このインデックス番号は、viewport.activeViewport で使用されているインデックス番号に対応します。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

<void>viewport.setCamera <camera_or_light_node> 

指定されたカメラを使って、アクティブ ビューポートをカメラ ビューに設定します。

また、フリー、ターゲット、またはダイレクト ライトを使用して、アクティブ ビューをライト ビューに設定することもできます。

<boolean>viewport.CanSetToViewport() 

ビューポート カメラとして使用可能なカメラとライトの場合は True を返します(言い換えると、オブジェクトは viewport.setCamera() の有効な引数です)。

ビューポート表示とレンダリング制御

<void>viewport.setGridVisibility {<int> | #all} <boolean> [ viewPanelIndex:<view panel index> ]

このメソッドにより、ビューポートでのグリッド可視性を設定します。

<int> はビューポート インデックス、<boolean> は新しいグリッド可視性状態です。

#all を指定すると、すべてのビューポートでのグリッド表示は、指定した状態に設定されます。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

<boolean>viewport.getGridVisibility <int> [ viewPanelIndex:<view panel index> ] 

このメソッドは、指定したビューポートにグリッドが表示される場合には True を、表示されない場合は False を返します。

<int> 引数は、ビューポート インデックスです。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

<boolean>viewport.isWire() 

このメソッドは、アクティブ ビューポートがワイヤ モードの場合に True を返します。

viewport.DispBkgImage 

このプロパティを True に設定すると、アクティブ ビューポートにバックグラウンド イメージが表示されます。False に設定すると、バックグラウンド イメージは表示されません。

<boolean>viewport.EnableSolidBackgroundColorMode <boolean>

このメソッドにより、ソリッド バックグラウンド カラー表示とグラデーション バックグラウンド カラー表示をコントロールします。

ブール演算引数が True の場合、現在のビューポートのバックグラウンドはソリッド カラーに設定されます (言い換えると、グラデーションは無効にされます)。

ブール演算引数が False の場合、現在のビューポートのバックグラウンドにグラデーション カラーが適用されます。

成功した場合は True を、失敗した場合は False を返します。

3ds Max 2013 以降で使用可能です。

<boolean>viewport.IsSolidBackgroundColorMode()

このメソッドは、現在のビューポートがソリッド バックグラウンド カラー モードの場合には True を、グラデーション モードの場合は False を返します。

3ds Max 2013 以降で使用可能です。

<render_level>viewport.GetRenderLevel() 

ビューポート レンダリング レベルを返します。

戻り値は次のいずれかになります。#smoothhighlights#wireFrame#smooth#facethighlights#facet#flat#litwireframe#Box#hiddenline

<void>viewport.SetRenderLevel <render_level> 

現在のビューポートでエッジ面が有効になっている場合は true、それ以外の場合は false を返します。

有効な引数の値は、#smoothhighlights#wireFrame#smooth#facethighlights#facet#flat#litwireframe#Box#hiddenline です。

<boolean>viewport.GetShowEdgeFaces() 

現在のビューポートで[エッジ面](Edged Faces)表示が有効になっている場合は True、それ以外の場合は False を返します。

<void>viewport.SetShowEdgeFaces <boolean> 

ブール値の引数によってエッジ面の表示のオンとオフを切り替えます。

<integer>viewport.GetTransparencyLevel() 

現在のビューポートの透明度のレベルを返します。有効な値は次のとおりです。

1 - なし

2 - シンプル

3 - ベスト

<void>viewport.SetTransparencyLevel <transp_level> 

現在のビューポートの透明度のレベルを設定します。有効な値については、上記を参照してください。

<boolean>viewport.IsEnabled() 

現在のビューポートが有効になっている場合は True、無効になっている場合は False を返します。

<boolean>viewport.IsPerspView() 

現在のビューポートがパース ビューポート(パースまたは正投影以外のカメラ)である場合は True、正投影ビュー(トップ、ボトム、フロント、バック、レフト、ライト、ユーザ、正投影のカメラなど)である場合は False を返します。

<float>viewport.GetFPS() 

現在のビューポートの[統計を表示](Show Statistics)オーバレイで計算された、最後のフレーム レートの値をフレーム/秒単位で返します。ビューポートの[統計を表示](Show Statistics)がオンに設定されていない場合には、返される値はビューポートの現在のフレーム レートを表しません

3ds Max 9 以降で使用可能です。

3ds Max 2008 以降では、[最適表示](Adaptive Degradation)がオンの場合、報告される値は実際のフレーム レートではなくターゲット フレーム レートになります。

ビューポート変換

<matrix3>getViewTM() 
<matrix3>viewport.getTM() viewport.setTM <matrix3> 

正投影以外(パースおよびアイソメトリック ユーザ ビュー)のビューポートのアクティブ ビュー画面とワールド間の変換行列を取得または設定します。これはアフィン カメラまたはビューポート行列です。setTM はパース ビューポートでのみ実行され、ビュー変換行列が正しく設定された場合は True を返し、それ以外の場合は False を返します。

次の関数は、アクティブ ビューポートの「目」の位置と方向を示すレイ値を返します。ビューポートは、正投影以外のビューポートでなければなりません。

fn getViewDirectionRay =
(
-- The affine TM transforms from world coords to view coords
-- so we need the inverse of this matrix
local coordSysTM = Inverse(getViewTM())
-- The Z axis of this matrix is the view direction.
local viewDir = -coordSysTM.row3
-- get the view position from this matrix
local viewPt = coordSysTM.row4
return ray viewPt viewDir
)
<fov_value>getViewFOV() 

アクティブ ビューポートの視野を返します。ビューポートが正投影ビューポートの場合は、57.2958(1 ラジアン)が返されます。

<fov_value>viewport.GetFOV() 

アクティブ ビューポートの視野を返します。getViewFOV() と同じです。

<boolean>viewport.SetFOV <float> 

アクティブ ビューポートの視野を、指定された角度(単位: 度)に設定します。

パース ビューおよびカメラ ビューでのみ動作します。

成功した場合は True を、現在のビューポートがパースペクティブまたはカメラ ビューではない場合は False を返します。

3ds Max 2008 以降で使用可能です。

<focal_distance>viewport.getFocalDistance() 

パース ビューの場合は、アクティブ ビューポートの焦点距離を返し、それ以外の場合は undefined を返します。

3ds Max 2008 以降で使用可能です。

<boolean>viewport.setFocalDistance <focal_distance> 

アクティブ ビューポートの焦点距離を設定します。

パース ビューでのみ動作します。 カメラ ビューでは動作しません。

成功した場合は True を、現在のビューポートがパースペクティブまたはカメラ ビューではない場合は False を返します。

3ds Max 2008 以降で使用可能です。

<boolean>viewport.pan <float> <float> [applyUIScaling:<true> ]

最初の引数を X、2 番目の引数を Y 方向のピクセル単位のデルタ値として使用して、現在のビューポートをパンします。

オブジェクト ベースのタイプ(カメラ、ライトなど)を除くすべてのビューポート タイプで動作します。

成功した場合は True を、ビューポートがオブジェクトベースの場合は False を返します。

applyUIScaling パラメータは、高 DPI ディスプレイに UI スケールを適用するかどうかを示します。

3ds Max 2008 以降で使用可能です。

例:

viewport.pan 10 0 -- pan horizontally by ten pixel
completeredraw() -- redraw the views to see the changes
<boolean>viewport.zoom <float> 

渡された浮動小数点値をズーム係数として使用して、現在のビューポートのズームを実行します(例: 2.0 の場合には 1/2 にズーム縮小し、0.5 の場合には 2 倍にズーム拡大します)。

オブジェクト ベースのタイプ(カメラ、ライトなど)を除くすべてのビューポート タイプで動作します。

成功した場合は True を、ビューがオブジェクトベースの場合は False を返します。

3ds Max 2008 以降で使用可能です。

例:

--while the perspective viewport is active, evaluate
viewport.setFOV 50.0 --set viewport Field Of View to 50 deg.
true
completeredraw() --redraw the views
OK
viewport.zoom 2.0 --zoom out two times
true
completeredraw() --redraw the views
OK
viewport.getFOV() --get the new Field Of View
86.0061

この結果の意味は以下のとおりです。

FOV 角度は、イメージ面の幅に応じて異なりますが、ターゲット距離は同じままです。

角度が 50 度の場合、半分の角度のタンジェントは、

tan (50.0/2) -> 0.466308 となります。

2 回ズームインすると、幅が 2 倍になります。

したがって、atan(0.466308*2) -> 43.0031 (新しい半分の角度)および

43.0031 * 2 = 86.0062 となり、これがフル ビューポート FOV 角度です。

<boolean>viewport.zoomPerspective <float> 

アクティブなビューポートをズームします。3ds Max の UI のインタラクティブ ズーム ツールとまったく同等です。

このメソッドは、パース ビューでのみ動作します。カメラ ビューでは動作しません。3ds Max UI で、ユーザが正投影ビューまたはアイソメトリック ユーザ ビューをズーム拡大すると、ビューポート タイプに対して内部的に切り替えが実行され、代わりに ViewExp::Zoom(viewport.zoom())が呼び出されます。

成功した場合は True を、ビューポートがパースペクティブ ビューではない場合は False を返します。

3ds Max 2008 以降で使用可能です。

<boolean>viewport.rotate <quat> [center:<Point3>] 

渡されたクォータニオン値を回転の値、Point3 値を回転の中心点として使用し、現在のビューポートの回転を実行します。

オブジェクト ベースのタイプ(カメラ、ライトなど)を除くすべてのビューポート タイプで動作します。

成功した場合は True を、ビューがオブジェクトベースの場合は False を返します。

3ds Max 2008 以降で使用可能です。

例:

theAxis = (viewport.getTM()).row3
for i = 1 to 180 do
(
viewport.rotate (quat 2 theAxis)
completeredraw()
)
viewport.setCanvasNavigationMode <boolean>

アクティブ ビューポートのキャンバス ナビゲーション モードをオンまたはオフにします。

ビューポートが 2D キャンバス ナビゲーション モードの場合、ユーザはビューポート内で 2D パンおよびズームのみを実行することができ、他のすべてのビューポート ナビゲーション コマンドは拒否されます。

3ds Max 2014 以降で使用可能です。

<boolean>viewport.isCanvasNavigationMode()

ビューポートがキャンバス ナビゲーション モードの場合は True を返し、そうでなければ False を返します。

ビューポートが 2D キャンバス ナビゲーション モードの場合、ユーザはビューポート内で 2D パンおよびズームのみを実行することができ、他のすべてのビューポート ナビゲーション コマンドは拒否されます。

3ds Max 2014 以降で使用可能です。

<bitmap>viewport.getViewportDib index:<int> viewPanelIndex:<int> captureAlpha:<boolean> gammaCorrect:<boolean>  

このメソッドは、アクティブ ビューポートのグラフィックス ウィンドウのイメージをビットマップ値で返します。

ビットマップのサイズは、ビューポートのサイズと同一です。

このメソッドは、こちらで説明されている gw.getViewportDib()とは異なり、maxops.displayActiveCameraViewWithMultiPassEffect() を使用した場合の結果が含まれています。このため、このメソッドは、被写界深度(DOF)またはモーション ブラーのプレビューを含むビューポート イメージを生成するために使用できます。

3ds Max 2008 以降で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。

3ds Max 2015 では、次のオプションが追加されました。

index: または viewPanelIndex: のいずれも指定されない場合、現在アクティブのビュ-ポ-トを返します。

index: のみが指定されている場合、現在の viewPanel パネルのインデックスで指定されたビットマップを返します。

viewPanelIndex: が指定され、index: が指定されない場合、インデックスで指定された viewPanel のアクティブなビューポートのビットマップを返します。

viewPanelIndex: および index: の両方が指定されない場合、インデックス指定された viewPanel のインデックス指定されたビューポートのビットマップを返します。

captureAlpha: オプション キーワード引数が指定され、True に設定されている場合、ビューポートアルファもキャプチャされます。指定されないまたは False に設定された場合、返されたイメージには、アルファおよび RGB チャンネルのみが含まれます(古い動作)。

gammaCorrect: オプション キーワード引数が指定されないまたは True に設定されている場合、ガンマ補正が返されたビットマップ値に対して実行されます。False に設定した場合は、ガンマ補正は実行されません。

こちらwindows.snapshot() も参照してください。

<IntegerPtr>viewport.getHWnd [ index:<int>viewPanelIndex:<int> ]

指定されたビューポートまたは viewPanel の HWND ウィンドウ ハンドルを返します。

index: または viewPanelIndex: のいずれも指定されない場合、現在アクティブのビュ-ポ-トを返します。

index: のみが指定されている場合、現在の viewPanel パネルのインデックスで指定された HWND を返します。

viewPanelIndex: が指定され、index: が指定されない場合、インデックスで指定された viewPanel のアクティブなビューポートの HWND を返します。

viewPanelIndex: および index: の両方が指定されない場合、インデックス指定された viewPanel のインデックス指定されたビューポートの HWND を返します。

3ds Max 2015 以降で使用可能です。

例:

--Print the HWND Handles of all valid viewports:
for i = 1 to viewport.numViews do 
    format "HWND of Viewport % is %\n" i (viewport.getHWnd index:i)

--Snapshot the valid viewports:
for i = 1 to viewport.numViews do
    display (windows.snapshot (viewport.getHWnd index:i)) caption:("Viewport "+i as string)
<void>viewport.ZoomToBounds <All_Bool> <A_Point3> <B_Point3> 

すべてのビューポートまたは現在のビューポートを境界で囲まれた領域にズームします。

1 番目の引数が True として渡された場合、すべてのビューポートがズームされます。False の場合は、選択されたビューポートだけがズームされます。

2 番目と 3 番目の引数は、ズームする、境界で囲まれた領域を定義します。

<point2>getViewSize [ removeUIScaling:<true> ]

アクティブ ビュー サイズをピクセル数による point2 で返します。

オプションの removeUIScaling パラメータは、高 DPI ディスプレイでスケールを削除するかどうかを示します。

<float>getScreenScaleFactor <point3> 

アクティブ ビューのスケール係数を返し、ポイントのビュー スペース原点からの距離にワールド空間単位で幅を指定します。

<float>viewport.GetScreenScaleFactor() 

アクティブ ビューのスケール係数を返し、ポイントのビュー スペース原点からの距離にワールド空間単位で幅を指定します。getScreenScaleFactor() と同じです。

<ray>mapScreenToWorldRay <pixel_coord_point2> applyUIScaling:<true>

現在のアクティブ ビューにあり、ビューポート面に垂直な特定のビューポート ピクセル座標を通過する、ワールド空間の Ray 値を返します。applyUIScaling が true (既定)の場合は、HDPI ディスプレイに必要なすべてのスケールが、返されたレイに適用されます。

<point3>mapScreenToView <pixel_coord_point2> <depth_float> \
  [ <viewport_size_point2> ]  applyUIScaling:<true>

ビュー座標空間内の 3D 点を返します。アクティブ ビューポート画面(ビューポート ピクセル座標)のポイント、およびビュー座標の深さにより、このメソッドはこのポイントをビュー座標にマップします。<viewport_size_point2> が指定されている場合は、実際のビューポート サイズの代わりに指定されたビューポート サイズが使用されます。applyUIScaling が true (既定)の場合は、HDPI ディスプレイに必要なすべてのスケールが、返された Point3 に適用されます。

<point3>mapScreenToCP <pixel_coord_point2> [ <viewport_size_point2> ] \
  applyUIScaling:<true>

現在アクティブなビューのビューポート ピクセル座標をワールド座標の作図平面にマップします。<viewport_size_point2> が指定されている場合は、実際のビューポート サイズの代わりに指定されたビューポート サイズが使用されます。applyUIScaling が true (既定)の場合は、HDPI ディスプレイに必要なすべてのスケールが、返された Point3 に適用されます。

<matrix3>getCPTM() 

作図平面とワールド間の変換行列を返します。

<float>gw.nonScalingObjectSize() 

このメソッドから返される値は、ビューポートのズームを元のサイズに戻すスケール係数として使用できます。たとえば、ライト、カメラ、テープ ヘルパー オブジェクトは、ビューポートがズーム拡大および縮小するときシーン内のノードを一定のサイズに保つために、この係数を使用します。

この値は、[ビューポート設定](Viewport Preferences)ダイアログ ボックスの[非スケーリング オブジェクトのサイズ](Non-Scaling Object Size)編集ボックスの影響を受けるので、ある程度の制御が可能です。

<point3>gw.getPointOnCP <pixel_coord_point2> [ applyUIScaling:<true> ]

指定した画面座標に基づいて、現在の作図平面上のワールド空間内のポイントを返します。

applyUIScaling パラメータは、高 DPI ディスプレイに UI スケールを適用するかどうかを示します。

<float>gw.getCPDisp <base_point3> <dir_point3> <start_pixel_coord_point2> \ 
  <end_pixel_coord_point2> [ applyUIScaling:<true> ]

このメソッドは、画面の開始点(<start_pixel_coord_point2>)、画面の終了点(<end_pixel_coord_point2>)、基点(<base_point3>)、および方向ベクトル(<dir_point3>)により、ワールド空間内の長さを返します。たとえば、円柱を作成する場合、マウスをクリックして円柱の中心点(基点)を定義し、半径をドラッグします。続いて円柱の高さをドラッグします。このメソッドは、初期基点、方向ベクトル(Z 軸)、マウスの開始点、およびユーザがインタラクティブに調整している現在のポイントに基づいて、途中および最終の円柱の高さを返す場合に使用します。

applyUIScaling パラメータは、高 DPI ディスプレイに UI スケールを適用するかどうかを示します。

<float>gw.getVPWorldWidth <point3> 

ワールド空間内のポイントに対するワールド空間内のビューポート画面の幅係数を返します。

<point3>gw.mapCPToWorld <point3> 

作図平面上の所定のポイントに対応するワールド空間のポイントを返します。たとえば、gw.getPointOnCP() を使用して画面上の座標を作図平面上のポイントに変換した場合、次にこのメソッドを呼び出して作図平面上のポイントをワールド空間のポイントに変換できます。

<float>gw.getFocalDist() 

アクティブ パース ビューの焦点距離を返します。

<boolean>gw.IsPerspView() 

アクティブ ビューポートがパース ビューの場合は True、それ以外の場合は False を返します。

ビューポートのスナップ設定

<point3>gw.snapPoint<pixel_coord_point2> [ snapType:<snapType_name> ] \
  [ snapPlane:<matrix3> ]  [ applyUIScaling:<true> ]

2 次元画面座標を指定すると、このメソッドは、現在のスナップ設定およびオプションの snapType: パラメータに基づいて、現在の作図平面またはオプションの snapPlane の 3D 点を返します。

有効な <snapType_name> 値は以下のとおりです。

#in3d - すべてのポイントにスナップします。

#inPlane - 作図平面上のポイントだけにスナップします。

#unSelObjs - スナップ ポイントを考慮するとき、選択されているノードを無視します。

#selObjs - スナップ ポイントを考慮するとき、選択されていないノードを無視します。

#unSelSubobj - スナップ ポイントを考慮するとき、選択されているサブオブジェクト ジオメトリを無視します。

#selSubobj - スナップ ポイントを考慮するとき、選択されていないサブオブジェクト ジオメトリを無視します。

#force3d - ユーザ設定を無視し、3D 点に強制的にスナップします。

3ds Max 8 以降で使用可能なオプションの snapPlane: 引数は、XY 平面をスナッピング平面にマップする変換の matrix3 値です。指定した matrix3 値が単位行列(Matrix3 1)に等しい場合、スナッピング平面は XY 作図平面と同一になります。

applyUIScaling パラメータは、高 DPI ディスプレイに UI スケールを適用するかどうかを示します。

tm = Matrix3(1) --represents the XY plane
m = Point2 0 0 --screen pixel coordinates
p = gw.snapPoint m snapPlane:tm --returns the snapping point
<float>gw.snapLength <length_float> 

このメソッドは、最も近いスナップ増分に長さをスナップし、スナップした距離を返します。

ビューポート領域

viewport.setRegionRect <viewport index> <box2> \
  [ viewPanelIndex:<view panel index>  applyUIScaling:<true> ]

指定されたビューポートの領域矩形を設定します。

applyUIScaling パラメータは、高 DPI ディスプレイに UI スケールを適用するかどうかを示します。

index: キーワード引数は、インデックスで指定されたビューポートを指定します。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

viewport.getRegionRect <viewport index> [ viewPanelIndex:<view panel index> removeUIScaling:<true> ]

指定されたビューポートの領域矩形を取得します。

オプションの removeUIScaling パラメータは、高 DPI ディスプレイでスケールを削除するかどうかを示します。

index: キーワード引数は、インデックスで指定されたビューポートを指定します。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

viewport.setBlowupRect <viewport index> <box2> \
  [ viewPanelIndex:<view panel index> applyUIScaling:<true> ]

指定されたビューポートの引き伸ばし矩形を設定します。引き伸ばし矩形は、現在のレンダリング出力サイズと同じアスペクトに設定する必要があります。トップ、ボトム、およびレフト コンポーネントの値は Box2 値の引数から得られますが、ライト コンポーネント値はアスペクトを強制的に適合するように再計算されます。

applyUIScaling パラメータは、高 DPI ディスプレイに UI スケールを適用するかどうかを示します。

index: キーワード引数は、インデックスで指定されたビューポートを指定します。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。

viewport.getBlowupRect <viewport index>  [ viewPanelIndex:<view panel index> removeUIScaling:<true> ]

指定されたビューポートの引き伸ばし矩形を取得します。

オプションの removeUIScaling パラメータは、高 DPI ディスプレイでスケールを削除するかどうかを示します。

インタフェース: EditRenderRegion を使用すると手動の領域編集ギズモをコントロールできます(3ds Max 2009 以降で使用可能)。

index: キーワード引数は、インデックスで指定されたビューポートを指定します。

オプションの viewPanelIndex キーワード引数は、インデックス付きの viewPanel を指定します。この引数が指定されていない場合は、現在の viewPanel (ViewPanelManager.GetActiveViewPanelIndex() で返される値と同じ)が既定値になります。