Community이미지github.com

Roblox 스카이 렌더

Roblox 아이템(모델, 도구, 악세서리, 파트)을 Roblox Studio 뷰포트 스크린샷만 사용하여 투명 배경의 깨끗한 이미지로 렌더링합니다. 사용자가 아이콘, 썸네일, 상점 이미지, 인벤토리 사진, 컷아웃, 스프라이트 또는 Roblox 장소에서 무언가의 '렌더'를 원하거나, 여러 아이템을 일괄 렌더링하거나, Photobooth 플러그인의 기법을 언급할 때 사용하세요.

Roblox 스카이 렌더란 무엇인가요?

이 스킬은 Roblox Studio의 스크린샷 기능만을 사용하여 Roblox 아이템의 투명 배경 PNG 이미지를 생성합니다. 기본 아이디어는 아이템을 검은색 배경과 흰색 배경 앞에서 각각 촬영한 후, 두 이미지의 픽셀 차이를 계산하여 알파 채널을 추출하는 것입니다. 이는 Photobooth 플러그인에서 사용하는 것과 동일한 기술입니다. 이 스킬은 Claude Haiku 5.5 모델에서 실행되도록 설계되어 속도가 빠릅니다. 스킬은 아이템을 복제하여 빈 하늘로 옮기고, 배경 평면을 배치한 후, 다양한 조명 및 환경 조건을 제어하여 일관된 결과를 얻습니다. 완전 자동화된 프로세스로, 사용자는 단순히 아이템 이름을 제공하기만 하면 됩니다. 주요 기능으로는 단일 아이템 렌더링, 일괄 렌더링, 다양한 조명 설정('studio' 또는 'world'), 파티클 효과 제어, 그리고 아이템이 완전히 보이도록 자동 재구성 기능이 포함됩니다. 이 스킬은 Roblox Studio MCP 도구(execute_luau, screen_capture)를 필요로 하며, Claude Code, Cursor, 또는 유사한 AI 에이전트 환경에서 사용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Wh1msicaly/roblox-sky-render/tree/HEAD

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Roblox 스카이 렌더은(는) 무엇을 하나요?

Studio 스크린샷만 사용하여 Roblox 장소의 아이템 하나를 투명 PNG 품질의 컷아웃으로 생성합니다. 별도의 플러그인이 필요 없습니다; 번들 스크립트는 Photobooth 플러그인이 사용하는 기술을 재현합니다.

먼저: 모델 확인

이 스킬은 Claude Haiku 5.5(claude-haiku-5-5)에서 실행되도록 설계되었습니다. Haiku는 상당히 빠르며, 여기서 수행하는 작업은 코딩 및 더 복잡한 작업을 위한 Opus 5.5와 같은 더 큰 모델이 필요하지 않은 고정된 스크립트 절차입니다. 다른 작업을 수행하기 전에 자신이 어떤 모델인지 확인하세요. Claude Haiku 5.5가 아니라면 중단하고 사용자에게 전환을 요청하세요: Claude Code에서는 /model claude-haiku-5-5를 실행하거나 데스크탑 앱의 모델 선택기에서 Haiku 5.5를 선택하면 됩니다. 전환하면 계속 진행합니다. 사용자가 현재 모델을 유지하기를 원한다면 그대로 진행하세요.

작동 방식 (실패 이유를 추론할 수 있도록)

Roblox는 투명 배경으로 렌더링할 수 없으므로 투명도는 측정됩니다:

  1. 아이템의 복사본을 평평한 검은색 배경 앞에서 촬영하고 다시 평평한 흰색 배경 앞에서 촬영합니다. 두 촬영 사이에는 다른 어떤 것도 변경되지 않습니다.
  2. 픽셀별: 한쪽에서 흰색이고 다른 쪽에서 검은색이면 배경입니다(알파 0). 양쪽에서 동일하면 단색 아이템입니다(알파 1). 그 사이의 값은 alpha = 1 - (white - black) / 255입니다. 유리와 안티앨리어싱된 가장자리를 처리합니다.
  3. 색상은 장소 자체의 룩(블룸, 색상 보정)이 적용된 검은색 배경에서 세 번째 촬영에서 가져오며, 알파로 나눕니다.

실패하게 만드는 모든 것은 배경 외에 두 촬영 간에 다른 것이거나 사진에 아이템 외의 다른 것이 있는 경우입니다. 이것이 다음 섹션에서 다루는 내용입니다.

월드 인지

스크린샷은 카메라 앞에 있는 모든 것과 아이템을 비추는 모든 것을 캡처합니다. 렌더링 전후에 다음을 고려하세요:

  • 방해가 되는 것들. 건물, 지형, 다른 모델, 베이스플레이트, 근처 객체의 파티클. 스크립트는 아이템이 있는 위치에서 절대 촬영하지 않음으로써 이를 모두 피합니다: 아이템을 복제하여 빈 하늘로 들어 올리고, 바로 뒤에 배경 평면을 배치합니다. 스테이징 위치가 실제로 비어 있는지 확인하고(clearance 스터드 이내에 파트 없음, 바로 위에 아무것도 없음, 지면이 멀리 아래에 있음) 비어 있을 때까지 한 번에 1500 스터드씩 올라갑니다. 보고서의 staged at Y= 줄을 읽으세요. 강제 고도가 확보되지 않았다거나 맑은 하늘을 찾을 수 없다고 표시되면 맵의 높이를 확인한 후 직접 altitude를 선택하세요.
  • 그림자를 드리우는 것들. 아이템과 태양 사이의 어떤 것은 프레임 밖에 있더라도 그림자를 드리웁니다. 스크립트는 태양 방향으로 레이캐스트를 수행하고 무언가에 부딪히는지 알려줍니다.
  • 빛이 오는 방향. 태양(또는 달)만이 유일한 방향성 조명이며 항상 수평선 위에 있습니다. lighting = "studio"(기본값)는 태양이 카메라의 왼쪽 어깨 위에 오도록 시간을 일시적으로 이동시키고 앰비언트 라이트를 높여 장소에 관계없이 모든 아이템이 동일하게 조명되도록 합니다. lighting = "world"는 장소의 조명을 유지합니다. 보고서는 태양이 보이는 쪽의 앞 또는 뒤에 있는지 알려줍니다. 뒤에 있으면 어두운 렌더링이 발생합니다.
  • 똑바로 위를 보기. lookStraightUp = true는 복제본을 회전시키고 카메라를 +Y 방향으로 향하게 하여 아이템 뒤에 올 수 있는 유일한 것이 하늘뿐이도록 합니다. 맵이 너무 높거나 복잡하여 측면에 맑은 하늘을 찾기 어려울 때 사용하세요. 단점: 카메라가 이제 아래에 있고, 태양이 그 뒤로 갈 수 없으며, 보고서의 키 라이트 정렬이 떨어집니다(1.0 대신 약 0.6). 실제로는 여전히 잘 렌더링됩니다; 단지 음영 제어가 줄어듭니다.
  • 하늘 효과. 대기 헤이즈, 구름, 태양 광선, 피사계 심도 및 블러는 카메라와 배경 사이에 있습니다. 스크립트는 촬영 중에 이를 제거하거나 비활성화합니다.
  • 글로우. 배경은 Neon 파트를 사용합니다. Neon은 조명과 그림자를 무시하여 정확한 단색을 제공하기 때문입니다. 그러나 Neon은 글로우(glow)가 있으며, 이 글로우가 아이템의 얇은 부분으로 번져서 투명하게 보이게 만듭니다. BloomEffects를 끄는 것은 이를 막지 못합니다(엔진이 기본 글로우로 대체됨). 강도 0, 크기 0의 활성화된 BloomEffect가 이를 막으며, 스크립트는 측정 촬영을 위해 하나를 추가합니다. 단색 아이템이 유령처럼 나온다면 이것이 가장 먼저 의심해야 할 사항입니다.
  • 움직이는 것들. 파티클, 빔, 불, 연기 및 트레일은 각 촬영에서 다른 위치에 있으며 검은색 덩어리로 변합니다. 기본적으로 복제본에서 꺼집니다. particles = true를 사용하면 촬영 중에 유지되고 고정됩니다.
  • Studio 오버레이. 선택 상자, 호버 아웃라인 및 StarterGui 화면은 스크린샷에 포함됩니다. 스크립트는 선택을 지우고 이를 숨기며, 모서리 위젯에서 떨어진 뷰포트의 중앙 정사각형만 사용합니다.
  • 뷰포트 자체. 출력 크기는 Studio 뷰포트의 짧은 쪽에 의해 제한되며, Studio는 3D 뷰가 보이는 편집 모드에 있어야 합니다. 그래픽 모드 "OpenGL"은 작동하지 않습니다.

스크립트는 오류 발생 시를 포함하여 완료되면 이 모든 것을 원래대로 되돌립니다. 원래 아이템은 절대 이동하거나 수정되지 않습니다.

워크플로우

작업이 진행되는 동안 타이밍 명령을 실행하지 마십시오. Claude Code는 모든 호출에 타임스탬프를 기록하므로, 실행 시간은 맨 끝(7단계 및 아래 Benchmark)의 한 번의 호출로 세션 기록에서 측정됩니다. 모든 작업은 해당 타이밍으로 끝나며, 사용자에게 전달하는 최종 메시지는 총 시간으로 끝납니다. 건너뛰지 말고 요청을 기다리지 마십시오.

  1. Studio 인스턴스를 찾고(list_roblox_studios) 둘 이상 열려 있는 경우 사용할 장소를 확인합니다. 그런 다음 execute_luau(datamodel Edit)를 통해 이 상태 확인을 실행합니다. want는 아이템 이름의 단어 시작 부분(소문자)으로 설정합니다. 한 번의 호출로 렌더러와 익스포터가 이 Studio 세션에 이미 설치되어 있는지 보고하고 일치하는 아이템을 나열합니다(아이템의 자식은 제외되므로 도구 폴더는 자식 수와 함께 한 번 표시됨):

    local want = "sword" -- 아이템 이름의 단어 시작 부분, 소문자; 검색을 건너뛰려면 ""
    local function matches(d)
    	if not (d:IsA("Model") or d:IsA("Tool") or d:IsA("Accessory") or d:IsA("BasePart") or d:IsA("Folder")) then
    		return false
    	end
    	local name, i = d.Name, string.find(string.lower(d.Name), want, 1, true)
    	while i do -- 단어 시작 부분에서만: "Cats", "Flying Cat", "CatTower", "Location"은 안 됨
    		if i == 1 or not string.match(string.sub(name, i - 1, i - 1), "%a") or string.match(string.sub(name, i, i), "%u") then
    			return true
    		end
    		i = string.find(string.lower(name), want, i + 1, true)
    	end
    	return false
    end
    local out, hits = {}, {}
    if want ~= "" then
    	for _, d in workspace:GetDescendants() do
    		if matches(d) then
    			local p, inside = d.Parent, false
    			while p and not inside do inside, p = hits[p] == true, p.Parent end
    			if not inside then
    				hits[d] = true
    				table.insert(out, `{d:GetFullName()} ({d.ClassName}, {#d:GetChildren()} children)`)
    				if #out >= 40 then table.insert(out, "(more; narrow want)") break end
    			end
    		end
    	end
    end
    return `renderer={shared.SkyRenderVersion} exporter={shared.SkyExportVersion}\n` .. table.concat(out, "\n")
    

    현재 버전은 renderer=1 exporter=1입니다. 일치하는 숫자는 해당 스크립트가 설치되어 최신 상태임을 의미합니다: 읽기 및 붙여넣기 단계(렌더러의 경우 아래 2단계, 익스포터의 경우 "HTTP 없이 PNG 저장"의 1단계)를 건너뜁니다. nil 또는 다른 숫자는 붙여넣기를 의미합니다. 목록에서 아이템이 명확하지 않으면 search_game_tree로 대체합니다.

  2. 상태 확인에서 renderer=1이 표시되지 않는 한 렌더러를 로드합니다. scripts/render_item.luau를 읽고 전체 파일을 변경하지 않고 execute_luau(datamodel Edit)의 code로 전달합니다. target = nil로 설정하면 세 가지 함수만 설치하고 "SkyRender installed"를 반환합니다. 이 함수들은 나머지 Studio 세션 동안 사용 가능합니다:

    • shared.SkyRender(config) 하나의 아이템을 렌더링하고 텍스트 보고서를 반환합니다
    • shared.SkyRenderBoard(names) 검사를 위해 결과를 표시합니다
    • shared.SkyRenderClear() 보드와 저장된 모든 결과를 제거합니다

    이후 호출에서 shared.SkyRender가 nil이라고 표시되면(Studio가 다시 시작됨) 파일을 다시 붙여넣으세요. render_item.luau 또는 export_nohttp.luau를 변경할 때는 파일 끝에 있는 shared.SkyRenderVersion 또는 shared.SkyExportVersion과 위의 숫자를 함께 업데이트하세요.

  3. 렌더링합니다. 각 호출은 짧습니다:

    return shared.SkyRender({ target = workspace.BananaSword, name = "banana" })
    

    일괄 처리의 경우 한 번의 호출로 반복하고 보고서를 결합합니다:

    local out = {}
    for _, tool in workspace.Mug:GetChildren() do
        table.insert(out, shared.SkyRender({ target = tool, name = tool.Name }))
    end
    return table.concat(out, "\n\n")
    
  4. 보고서를 읽습니다. 양호한 보고서는 다음과 같습니다:

    OK 512x512px "banana" -> CoreGui.SkyRenderResults.banana
    item radius 2.45 studs, camera 18.7 studs away, staged at Y=3001
    studio lighting, key light alignment 1.00 (1 = ideal)
    coverage: 8.8% opaque, 0.4% semi-transparent, bounds x 44-474 y 148-365
    backdrop (neon) calibration white=255,255,255 black=0,0,0 osScale=1
    time 3.41s (wall clock: staging, shots, composite and restore)
    

    확인: 캘리브레이션이 255 / 0입니다. 경계가 0 또는 size-1에 닿지 않습니다(클리핑됨). 불투명 대 반투명 분할이 아이템에 대해 합리적입니다(단단한 검은색은 거의 모두 불투명, 유리는 상당한 반투명 비율을 가져야 함). NOTES: 아래의 모든 사항에 대해 조치하십시오.

  5. 확인합니다. 숫자는 아이템이 잘못된 방향을 보고 있는지 알려주지 않습니다. shared.SkyRenderBoard({ "banana" })(또는 모든 결과에 대해 {})를 호출합니다. 하늘에 임시 보드를 만들어 각 이미지를 마젠타색과 진한 회색 위에 표시하고 screen_capture에 전달할 정확한 camera_position 및 look_at_position을 반환합니다. screen_capture는 GUI를 그리지 않으므로 보드가 파트에 데칼을 사용하는 이유입니다. 판단: 올바른 각도? 전체 아이템이 프레임 내에 있습니까? 두 배경 모두에서 깨끗한 가장자리? 보이는 쪽이 조명됩니까? 이상한 덩어리가 없습니까? 옵션을 변경하여 올바를 때까지 다시 렌더링한 다음 shared.SkyRenderBoard(nil)을 호출하여 보드를 제거합니다.

  6. 전달(아래 참조)한 다음, 사용자가 세션에 결과를 유지하기를 원하지 않는 경우 shared.SkyRenderClear()를 호출합니다.

  7. 시간 측정 (필수, 모든 작업). 작업의 마지막 도구 호출로, PNG가 저장되고 Studio가 정리된 후 python scripts/benchmark.py를 실행합니다. 그런 다음 사용자에게 전송하는 최종 메시지를 다음과 같은 형식의 결과로 끝냅니다:

    Total time: 2m 10s for 6 images (21.6 s per image), cold run.
    

    작업이 단일 이미지보다 많거나 느린 부분이 있는 경우 해당 줄 위에 단계 표를 추가합니다. 합계는 메시지의 마지막 줄이며, 절대 생략하지 않으며 사용자가 보지 못할 수 있는 도구 결과에만 넣지 않습니다.

벤치마크 (사용자의 프롬프트에서 마지막 메시지까지)

항상, 모든 작업이 끝날 때(워크플로우 7단계), 사용자가 요청했는지 여부와 관계없이 수행합니다. 하나의 도구 호출이 소요됩니다: Claude Code는 모든 프롬프트, 도구 호출 및 결과를 타임스탬프와 함께 세션 기록(~/.claude/projects/<project>/<session>.jsonl)에 기록하며, scripts/benchmark.py가 이를 읽습니다.

  1. 시기: 작업 턴의 마지막 도구 호출로 수행합니다. 자신을 포함한 모든 호출을 확인하므로 최종 메시지(몇 초)만 제외됩니다. 사용자가 나중에 완료된 작업에 대해 물어보면 그때 다시 실행하여 전체 수치를 얻습니다.
  2. 실행: python scripts/benchmark.py는 이 스킬을 실행한 가장 최근 세션과 마지막 렌더링 요청을 선택합니다. 세션 ID 또는 .jsonl 경로를 전달하여 다른 세션을 선택하고, --list 및 --turn <n>을 사용하여 다른 요청을 선택하고, --calls를 사용하여 모든 호출과 타이밍을 나열합니다.
  3. 보고서: 단계 표(찾기, 설정, 렌더링, 내보내기, 조립, 정리, 부기, 응답)는 각각 모델 시간(스크립트 붙여넣기를 포함한 호출 사고 및 작성)과 도구 시간(결과 대기)으로 나뉩니다. 병렬 호출은 한 번만 계산되므로 단계를 합하면 총계가 됩니다. 그런 다음 이미지 수와 이미지당 초가 표시됩니다.
  4. 렌더링 세부 정보 (선택 사항): 각 렌더링 보고서의 time 줄은 해당 렌더링 주변의 Studio 내부에서 측정됩니다. 개별 렌더링을 비교하는 데 사용하세요.

실행이 콜드(렌더러와 익스포터가 이 작업에서 붙여넣어짐)인지 웜(이미 설치됨)인지 명시하세요. 붙여넣기가 콜드 실행 설정 시간의 가장 큰 부분을 차지하기 때문입니다. 7단계의 Total time: 줄로 최종 메시지를 마무리하세요.

옵션

target을 제외한 모든 옵션은 선택 사항입니다. 기본값은 대괄호 안에 있습니다.

옵션의미
target렌더링할 인스턴스. 모델, 파트, 도구, 악세서리 및 폴더 모두 작동합니다.
name ["render"]결과의 레이블. 이름을 재사용하면 이전 결과를 덮어씁니다.
viewDir [(-1, 0.6, -1)]아이템에서 카메라 방향으로의 방향(세계 축 기준, 아이템이 현재 놓인 상태). (0,0,-1)은 -Z 면을 바라봅니다. Y를 올리면 내려다봅니다.
up [(0,1,0)]사진에서 위쪽을 나타내는 세계 방향. 검을 대각선으로 놓는 등에 사용합니다.
fov [20]좁을수록 평평하고 아이콘처럼 보입니다. 50-70은 원근감을 과장합니다.
size [512]정사각형 출력(픽셀 단위), 뷰포트의 짧은 쪽으로 제한됩니다.
padding [0.08]이미지의 분수로 표시되는 여백.
lighting ["studio"]"studio" 또는 "world", 위 참조.
particles [false]파티클 효과를 끄는 대신 유지합니다(고정됨).
lookStraightUp [false]카메라가 +Y를 가리키도록 스테이징, 위 참조.
altitude [auto]스테이징 높이를 강제 지정합니다.
clearance [400]스테이징 지점 주변에 필요한 빈 공간의 스터드 수.
backdrop ["neon"]"neon" 또는 대체재로 "fog"(단색 안개 속에 숨겨진 평면).
refit [true]먼저 테스트 샷을 촬영한 다음 보이는 픽셀이 이미지를 채우도록 재구성합니다. 파트 경계 상자는 느슨하므로 이 옵션이 없으면 아이템이 작게 나옵니다.
keepLook [true]장소의 블룸 및 색상 보정이 적용된 샷에서 색상을 가져옵니다. 비활성화된 경우 검은색 배경의 측정 샷에서 색상을 사용하며, 이는 약간 다를 수 있습니다.
backdropColor [(1, 1, 1)]흰색 배경의 색상. 측정을 위해 검은색 배경은 (0, 0, 0)으로 유지됩니다.
backdropBrightness [1]배경 표면의 밝기 배율. 흰색 배경에만 적용됩니다.

HTTP 없이 PNG 저장

shared.SkyRender는 CoreGui 아래에 결과를 배치합니다. 게임은 기본적으로 HttpService를 통해 HTTP 요청을 할 수 있지만, Studio는 그렇지 않을 수 있습니다. execute_luau는 Lua 값을 반환하지만 바이너리 이미지 데이터는 포함할 수 없습니다. 이 익스포터는 HTTP 없이 CoreGui 결과의 screen_capture 호출을 설정합니다.

  1. 상태 확인에서 exporter=1이 표시되지 않은 경우 scripts/export_nohttp.luau를 읽고 execute_luau(datamodel Edit)의 code로 붙여넣습니다. "SkyExport installed"를 반환하고 shared.SkyExport 함수를 남깁니다.
  2. 결과 보드(5단계 참조)를 설정한 후 screen_capture를 호출합니다. 동일한 camera_position 및 look_at_position을 전달합니다. shared.SkyRenderBoard는 이를 반환합니다. screen_capture는 각 camera_position/look_at_position 쌍에 대해 모양 목록을 반환하거나 단일 쌍이면 단일 캡처를 반환합니다.
  3. 일괄 처리: 여러 위치를 camera_position 및 look_at_position의 배열로 screen_capture에 전달합니다. 그러면 캡처 배열이 반환됩니다.
  4. 각 캡처를 shared.SkyExport(capture, "output/banana.png")에 전달합니다. "출력" 디렉토리가 존재하는지 확인하세요. 2단계 이후에 scripts/mkdir.luau를 붙여넣어 디렉토리를 생성할 수 있습니다. 각 호출은 "saved banana.png"와 같은 줄을 반환합니다.

단계 5 대신 단계 2-4를 사용하여 뷰포트에서 직접 확인할 수 있습니다. 보드는 여전히 프레임 구성을 검증하는 데 유용하지만 스크린샷 정확도는 보드의 보기와 일치합니다. PNG가 저장되면 사용자는 이미지를 다운로드할 수 있습니다(예: cat output/banana.png를 사용하지 말고 대신 이미지를 클릭하세요).

일반적인 문제 해결

"뷰포트가 너무 작습니다"

Studio가 큰 UI 요소로 열려 있습니다. Studio 창을 800x800 이상으로 확장하고 도구 모음을 최소화하세요. 크기를 초과하는 렌더링을 요청하면 스크립트가 자동으로 축소하지만, 일반적으로 512px 출력에는 550px 뷰포트이면 충분합니다.

"컬러와 알파 샷의 배경 면적이 너무 다릅니다"

아이템 또는 배경이 촬영 사이에 움직였습니다. Studio가 다른 프레임에 렌더링 중이거나 애니메이션이 실행 중입니다. particles = true가 설정되어 있거나 애니메이션된 메쉬가 있는 경우 발생할 수 있습니다. 재시도하면 사라질 수 있습니다(프레임 경쟁 조건). 지속되면 아이템 근처에서 움직이는 것이 없는지 확인하세요.

"눈에 띄는 알파 라인"

앤티앨리어싱된 가장자리는 때때로 미세한 선처럼 보입니다. backdropColor를 조정하여 가장자리 근처의 픽셀을 아이템 색상과 일치시키면 도움이 될 수 있습니다. 예를 들어 흰색과 검은색이 아닌 중간 회색 배경입니다.

아이템이 너무 작습니다

refit이 비활성화되었습니다. 기본적으로 활성화되어 있습니다. 수동으로 더 좁은 FOV 또는 더 작은 패딩을 설정하세요.

아이템이 프레임 밖에 있습니다

viewDir이 잘못되었습니다. 아이템의 방향을 확인하고 카메라가 아이템의 보이는 면을 향하도록 조정하세요. (0, 0, -1)은 아이템이 어떤 방향을 향하든 해당 -Z 면을 바라봅니다.

아이템이 거의 보이지 않습니다

매우 어둡습니다. lighting이 "world"로 설정되어 있고 태양이 아이템 뒤에 있습니다. "studio"로 변경하거나 낮 시간을 조정하여 태양이 보이는 쪽을 비추도록 하세요.

배경에 잘린 가장자리가 있습니다

아이템이 뷰포트 가장자리에 너무 가깝습니다. 패딩을 늘리거나 더 큰 뷰포트를 사용하세요.

아이템에 이상한 색상 얼룩이 있습니다

파티클, 빔 또는 연기 효과가 각 촬영에서 다른 위치에 있어 알파 계산을 방해합니다. particles = false(기본값)로 설정하거나 수동으로 제거하세요.

"맑은 하늘을 찾을 수 없습니다"

맵이 너무 크거나 닫혀 있습니다. lookStraightUp = true를 사용하거나 수동 altitude를 설정하세요. 확실하지 않으면 먼저 보기를 열어 장소 구조물의 높이를 확인하세요.

스크립트가 중단됩니다

Studio가 충돌하거나 스크립트가 Lua 오류를 반환합니다. 오류 메시지를 확인하고 이전 단계를 재시도하세요. 스크립트는 정리를 시도하지만 수동 개입이 필요할 수 있습니다.

일반적인 참고 사항

  • 항상 4단계에서 보고서를 확인하세요. 문제를 조기에 발견합니다.
  • 스테이징 높이, 키 라이트 방향 및 범위를 확인하세요. 이것들이 렌더링 품질의 주요 결정 요소입니다.
  • 일괄 처리는 첫 번째 렌더링에서 설정 비용을 지불한 후 각 추가 항목에 대해 더 빠릅니다.
  • 작업이 완료된 후 shared.SkyRenderClear()를 호출하여 CoreGui를 정리하세요. 보드를 제거하는 것을 잊지 마세요.

관련 스킬