ノード一覧に戻る

ソリッドレンダリング

solid_render

立体をオルソ投影(1ピクセル=1レイ)でレンダリングし、法線・高さ・深度・曲率・素材ID・面IDを持つサーフェースに変換します。ライティングは後段のノードで行います。

下書き
解説あり

入力ポート

名前説明
ソリッド
solid
Solid
必須
レンダリングする立体です。

出力ポート

名前説明
サーフェース
surface
Surface
レンダリング結果のサーフェースです。「サーフェース光プレビュー」につなぐと光を当てられます。
画像
image
Image
ライティング前のベタ塗り画像です。

パラメータ

名前既定値範囲説明・選択肢
カメラ方位角
azimuth
Angle
45— / step 1

カメラの水平方向の角度です。アイソメ素材は45度刻みが基本です。8方向素材はここをアニメさせます。

カメラ角スナップ
camera_angle_snap
Float
00–90 / step 0.5

レンダリング前にカメラ方位角を指定刻みへ丸めます。0ならスナップしません。8方向素材では45が基本です。

見下ろし角
elevation_preset
Enum
Iso2To1

カメラの見下ろし角のプリセットです。

  • 2:1アイソメIso2To1
    26.565度。ドット絵の定番2:1アイソメです。
  • 30°Iso30
    30度のアイソメです。
  • 45°Iso45
    45度の見下ろしです。
  • 真上Top
    ほぼ真上からの見下ろしです。
  • カスタムCustom
    カメラ仰角パラメータの値を使います。
1ユニットのピクセル数
pixels_per_unit
Int
161–128

立体の1ユニットを何ピクセルで描くかです。16なら 1×1×1 のボックスが約16px幅になります。

余白
padding
Int
10–32

自動フィットした出力の外側に足す透明余白(px)です。

カメラ仰角
custom_elevation
Float
26.5650005340576171–89 / step 0.5

プリセットがカスタムの時のカメラ仰角(度)です。

出力フレーム
frame_mode
Enum
AutoFit

出力フレームの決め方です。アニメーションや8方向素材では固定キャンバスを使います。

  • 自動フィットAutoFit
    現在の立体に合わせて出力サイズを自動調整します。
  • 固定キャンバスFixedCanvas
    ピクセル幅・高さとワールド中心を固定します。アニメーション素材向けです。
固定幅
fixed_canvas_width
Int
641–1024

出力フレームを固定するときの幅(px)です。アニメーションでフレーム幅を揃えるために使います。

固定高さ
fixed_canvas_height
Int
641–1024

出力フレームを固定するときの高さ(px)です。アニメーションでフレーム高さを揃えるために使います。

固定範囲X
frame_world_width
Float
40.05–256 / step 0.05

固定キャンバス時に使うワールド範囲のX幅です。回転素材では対象が入る大きさにします。

固定範囲Y
frame_world_depth
Float
40.05–256 / step 0.05

固定キャンバス時に使うワールド範囲のY奥行きです。

固定範囲Z
frame_world_height
Float
40.05–256 / step 0.05

固定キャンバス時に使うワールド範囲のZ高さです。

中心X
frame_center_x
Float
0-256–256 / step 0.05

固定キャンバス時の中心Xです。

中心Y
frame_center_y
Float
0-256–256 / step 0.05

固定キャンバス時の中心Yです。

中心Z
frame_center_z
Float
0-256–256 / step 0.05

固定キャンバス時の中心Zです。

概要

  • ライティングはしない: 光を当てるのは後段(サーフェース光プレビュー 等)の仕事

技術詳細

  • AutoFit では出力サイズを立体のバウンディングから自動フィット(上限1024px)
  • FixedCanvas では出力サイズと注視中心を固定する。ターンテーブルや8方向素材ではこちらを使う
  • 1出力ピクセル=1レイ、点サンプリング、AAなし(ドット絵前提)
  • normal_map はビュー空間(x右・y画像下・z画面手前)で、サーフェース光プレビュー の規約と一致
  • height_map はワールドzの正規化(白=高い)、depth_map はビュー深度(白=手前)
  • curvature_map はスクリーンスペース曲率(0.5=平坦、>0.5=凸エッジ)。エッジハイライト生成用
  • face_ids は {solid_id}:top / :left / :right / :front / :back / :bottom。各生成ノードの solid_id が空欄なら solid:0 のような自動IDを使う
  • 実装は crates/pxn-core/src/sdf_render.rs(rayon並列)。参考性能: 129×81px・素体20個で約3.3ms(release)

3Dビューア連携

  • Inspector またはプレビューウィンドウの 3D 表示では、接続されている Solid 入力を Solid3DStage で直接レイマーチ表示する
  • ビューア内でドラッグして角度を探し、この角度を採用 を押すと azimuthelevation_preset=Customcustom_elevation に書き戻される
  • ビューアの checker と light gizmo は表示専用であり、surface / image 出力には焼き込まれない

使用例

  • ソリッドボックス → ソリッドレンダリング → サーフェース光プレビュー がアイソメブロックの最小構成
  • TimeSource → SawtoothWave → ソリッド変換.回転Z → ソリッドレンダリング.image → AnimationRender でターンテーブルのスプライトシート
  • 8方向素材は VariantRange(key=render:azimuth, start=0, end=315, count=8) → BatchRender.items とし、camera_angle_snap=45FixedCanvas を併用する
  • サーフェース書き出し につなぐとHD-2Dエンジン用マップセットになる

アニメーション時の推奨

  • frame_mode = FixedCanvas
  • fixed_canvas_width / fixed_canvas_height を最終1フレームのサイズにする
  • 対象が全フレームで収まるように frame_world_width/depth/height を広めに取る
  • 8方向素材では camera_angle_snap = 45
ノード一覧に戻る
ソリッドレンダリング — PixPipeline ノード解説