シーンとソース
このガイドでは、シーンの切り替えと管理、シーンごとのトランジションの上書き、シーンアイテム(シーン内のソースインスタンス)の操作(トランスフォーム、並び順、ロック、ブレンドモードを含む)について説明します。
シーン管理
| 関数 | 説明 |
|---|---|
SetCurrentScene(Name) | シーンを切り替える |
GetSceneList() | OBS からシーンリストを更新する |
GetGroupList() | すべてのシーングループを取得する |
GetCachedScenes() | ローカルにキャッシュされたシーンリストを取得する |
GetCachedScenesWithItems() | ソースアイテムを含むシーンを取得する |
SetSceneItemEnabled(Scene, ItemId, Enabled) | ソースを表示/非表示にする |
シーン CRUD
| 関数 | 説明 |
|---|---|
CreateScene(Name) | 新しい空のシーンを作成する |
RemoveScene(Name) | シーンを削除する(現在のシーンの場合は失敗) |
SetSceneName(Name, NewName) | シーンの名前を変更する |
イベント:
OnSceneCreated(SceneName, SceneUuid, bIsGroup): シーンが作成されたOnSceneRemoved(SceneName, SceneUuid, bIsGroup): シーンが削除されたOnSceneNameChanged(SceneUuid, OldName, NewName): シーンの名前が変更された
注意: 現在アクティブなシーンは削除できません。先に別のシーンへ切り替えてください。
シーントランジションの上書き
シーンごとのトランジションの上書きを使用すると、特定のシーンへ切り替える際に異なるトランジションを適用できます。
| 関数 | 説明 |
|---|---|
GetSceneTransitionOverride(SceneName) | シーンの上書き設定を取得する(非同期) |
SetSceneTransitionOverride(SceneName, TransitionName, DurationMs) | 上書きを設定する(-1 の時間 = 現在の設定を維持) |
ClearSceneTransitionOverride(SceneName) | 上書きを削除し、デフォルトのトランジションを使用する |
GetCachedTransitionOverride(SceneName, OutOverride) | ローカルにキャッシュされた上書きデータを取得する |
FetchAllTransitionOverrides() | キャッシュ済みの全シーンの上書きを取得する |
イベント:
OnTransitionOverrideReceived(SceneName, Override): 上書きデータが取得された
上書き構造体 (FOBSSceneTransitionOverride):
| フィールド | 型 | 説明 |
|---|---|---|
TransitionName | FString | 上書きトランジションの名前(空 = 上書きなし) |
TransitionDuration | int32 | 時間(ミリ秒)(-1 = 上書きなし) |
bHasOverride | bool | 上書きが設定されている場合は True |
シーンアイテムのトランスフォーム
| 関数 | 説明 |
|---|---|
GetSceneItemTransform(Scene, ItemId) | OBS からトランスフォームのプロパティを取得する |
SetSceneItemTransform(Scene, ItemId, Transform) | すべてのトランスフォームプロパティを設定する |
SetSceneItemPosition(Scene, ItemId, X, Y) | 位置のみを設定する |
SetSceneItemScale(Scene, ItemId, ScaleX, ScaleY) | スケールのみを設定する |
SetSceneItemRotation(Scene, ItemId, Rotation) | 回転を度単位で設定する |
SetSceneItemCrop(Scene, ItemId, L, T, R, B) | クロップをピクセル単位で設定する |
SetSceneItemBounds(Scene, ItemId, Type, W, H, Align) | バウンディングボックスを設定する |
GetSceneItemId(Scene, SourceName) | ソース名をシーンアイテム ID に変換する |
GetCachedSceneItemTransform(Scene, ItemId, OutTransform) | キャッシュされたトランスフォームデータを取得する |
トランスフォームのプロパティ:
- 位置: ピクセル単位の X/Y 座標
- スケール: X/Y の倍率(
1.0= 100%) - 回転: 度数(0 〜 360)
- クロップ: 各辺から削除するピクセル数
- バウンド: バウンディングボックスの種類、サイズ、アラインメント
- アラインメント: ビットフラグ(0=中央、1=左、2=右、4=上、8=下)
バウンドの種類:
| 種類 | 説明 |
|---|---|
None | バウンディングボックスなし |
Stretch | フィットするよう引き伸ばす(アスペクト比を無視) |
ScaleInner | バウンド内に収める(レターボックス) |
ScaleOuter | バウンドを埋める(クロップされる場合あり) |
ScaleToWidth | 幅に合わせてスケーリングする |
ScaleToHeight | 高さに合わせてスケーリングする |
MaxOnly | 最大サイズのみ(アップスケーリングなし) |
重要: シーンアイテムはソース名ではなく SceneItemId で識別されます。同じソースが異なる ID で同一シーン内に複数回登場することがあります。ソース名を ID に変換するには
GetSceneItemId()を使用してください。
シーンアイテム管理(CRUD)
| 関数 | 説明 |
|---|---|
CreateSceneItem(Scene, SourceName, Enabled) | 既存のソースをシーンに追加する |
RemoveSceneItem(Scene, ItemId) | シーンからアイテムを削除する(ソースは削除されない) |
DuplicateSceneItem(Scene, ItemId, DestScene) | アイテムをクローンする(宛先が空の場合は同じシーン) |
GetSceneItemLocked(Scene, ItemId) | アイテムがロックされているか確認する |
SetSceneItemLocked(Scene, ItemId, Locked) | OBS UI でアイテムをロック/アンロックする |
GetGroupSceneItemList(GroupName) | グループ内のすべてのアイテムを取得する |
GetSceneItemSource(Scene, ItemId) | シーンアイテムのソース情報を取得する |
GetSceneItemIndex(Scene, ItemId) | Z オーダーの位置を確認する |
SetSceneItemIndex(Scene, ItemId, Index) | Z オーダーを設定する(0 = 背面、値が大きいほど前面) |
GetSceneItemBlendMode(Scene, ItemId) | ブレンドモードを確認する |
SetSceneItemBlendMode(Scene, ItemId, Mode) | 合成ブレンドモードを設定する |
ブレンドモード:
| モード | 説明 |
|---|---|
Normal | デフォルトのブレンド |
Additive | 明るくする(色を加算) |
Subtract | 暗くする(色を減算) |
Screen | スクリーンブレンド |
Multiply | 乗算ブレンド |
Lighten | 明るいピクセルを維持 |
Darken | 暗いピクセルを維持 |
注意事項:
CreateSceneItemは既存のソースが必要であり、新しいソースを作成することはできません。DuplicateSceneItemは参照を作成するものであり、コピーではありません。ソースへの変更は両方に影響します。RemoveSceneItemは参照を削除するのみです。元のソースは引き続き利用可能です。- インデックス
0はシーンの背面(最初にレンダリング)で、値が大きいほど前面になります。 - ブレンドモードの変更は OBS イベントを発火しないため、必要であればローカルで追跡してください。
イベント
シーン
OnCurrentSceneChanged(SceneName, SceneUuid): アクティブなシーンが変更されたOnSceneListUpdated: シーンリストが更新されたOnSceneCreated(SceneName, SceneUuid, bIsGroup): 新しいシーンが作成されたOnSceneRemoved(SceneName, SceneUuid, bIsGroup): シーンが削除されたOnSceneNameChanged(SceneUuid, OldSceneName, NewSceneName): シーンの名前が変更されたOnTransitionOverrideReceived(SceneName, Override): シーントランジションの上書きデータが取得された
シーンアイテム
OnSceneItemTransformChanged(SceneName, SceneItemId, Transform): シーンアイテムのトランスフォームが変更されたOnSceneItemCreated(SceneName, SourceName, SceneItemId, SceneItemIndex): アイテムがシーンに追加されたOnSceneItemRemoved(SceneName, SourceName, SceneItemId): アイテムがシーンから削除されたOnSceneItemEnableStateChanged(SceneName, SceneItemId, bEnabled): アイテムの表示状態が変更されたOnSceneItemLockStateChanged(SceneName, SceneItemId, bLocked): アイテムのロック状態が切り替わったOnSceneItemListReindexed(SceneName): シーン内のアイテムが並べ替えられた(Z オーダーが変更された)
OBS のすべてのドメインにわたるイベントの完全なカタログは、イベントリファレンスを参照してください。