장면 및 소스
이 가이드에서는 장면 전환 및 관리, 장면별 전환 재정의, 그리고 장면 항목(장면 안의 소스 인스턴스) 작업을 다룹니다. 변형, 순서 지정, 잠금, 블렌드 모드도 포함됩니다.
장면 관리
| 함수 | 설명 |
|---|---|
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 | 지속 시간(ms) (-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로 한 장면에 여러 번 나타날 수 있습니다.
GetSceneItemId()를 사용하여 소스 이름을 ID로 변환하세요.
장면 항목 관리 (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 도메인에 걸친 이벤트 전체 목록은 이벤트 레퍼런스를 참조하세요.