언덕 위의 빌라의 테라스 라운지와 야외 다이닝 테이블. 유리 난간 너머로 바다가 보인다
테라스 라운지와 야외 다이닝. visionOS Simulator에서 캡처.

사용한 도구

1. 참고 이미지에서 시작하기

언덕 위의 빌라는 참고 이미지 두 장에서 시작했습니다. 평면을 위에서 잘라 본 컷어웨이 렌더와, 테라스로 열린 해 질 녘의 복층 높이 거실입니다. 직접 가진 이미지를 써도 되고, 생성해 달라고 해도 됩니다.

에이전트에게 보낼 프롬프트현대적인 언덕 위 빌라의 참고 이미지 두 장을 생성해 줘. 하나는 평면을 위에서 잘라 본 컷어웨이 렌더, 다른 하나는 골든 아워의 복층 높이 거실로, 파이어 테이블 라운지와 8인용 야외 다이닝, 작은 수영장이 있는 테라스로 열려 있는 모습.
수영장, 테라스 라운지, 야외 다이닝, 거실, 키친 아일랜드, 계단이 있는 빌라를 위에서 잘라 본 컷어웨이 렌더
평면 참고 이미지.
해 질 녘의 복층 높이 거실. 트래버틴 벽난로 벽, 아이보리 소파, 부클레 의자, 유리관 펜던트가 있고 도시와 만이 내려다보이는 테라스로 열려 있습니다
거실 참고 이미지.

이미지 생성에는 API 키가 필요 없습니다. ChatGPT 구독에 포함된 이미지 생성으로 충분합니다. 저희는 어쩌다 보니 Scenario와 OpenAI API를 썼습니다.

2. 바닥과 좌석 계획

에이전트에게 보낼 프롬프트이 참고 이미지 두 장을 미터 단위 평면도와 좌석 배치로 바꿔 줘. 2개 층, 복층 보이드, 테라스, 수영장을 포함해서. 만들기 전에 평면도를 먼저 보여 줘.

에이전트는 평면 계획을 미터 단위 숫자로 작성한 뒤 도면으로 그렸습니다. 도면, 모델, 좌석이 모두 이 파일 하나에서 나오므로, 가구를 옮기면 그 좌석도 함께 옮겨집니다.

좌석은 33개이며 9개 그룹으로 나뉩니다. 그중 세 그룹에는 숨길 수 있는 책상이 있습니다. 주방 아일랜드, 야외 다이닝, 스카이 룸입니다.

언덕 위의 빌라 1층과 테라스 평면도거실주방 아일랜드벽난로 벽계단현관테라스 라운지야외 다이닝수영장123456789101112131415161718192021222324252627북05 m
1층과 테라스. 번호가 붙은 점은 좌석이고, 점선 윤곽은 위층의 스카이 룸입니다.
언덕 위의 빌라 2층 평면도(1층 윤곽을 흐리게 표시)보이드북쪽 브리지갤러리 서재스카이 룸계단282930313233북05 m
2층(1층 윤곽을 흐리게 표시).
그룹좌석도면 번호
거실 소파41–4
거실 의자45–8
주방 아일랜드49–12
테라스 소파513–17
테라스 라운지 의자218–19
야외 다이닝820–27
스카이 룸228–29
북쪽 브리지230–31
갤러리 서재232–33

3. Blender로 만들기

에이전트에게 보낼 프롬프트이 평면 계획대로 헤드리스 Blender에서 만들어 줘. 텍스처는 무료 CC0 자료를 먼저 쓰고, 없는 것만 생성해. 의자는 각각 제품 이미지를 먼저 생성한 뒤 3D 모델로 바꿔. 내보내기 전에 모든 좌석을 렌더로 확인하고, 삼각형은 150,000개 이하로 유지해.

언덕 위의 빌라의 경우 Poly Haven 텍스처 12세트와 ambientCG 트래버틴 하나에, 생성한 석재, 작품, 책등을 더했습니다. 의자 6개는 제품 이미지에서 3D 모델이 되었습니다. 첫 빌드는 삼각형 148,484개였습니다.

복층 높이 거실의 Blender 렌더. 소파와 스위블 체어 너머로 테라스, 수영장, 야외 다이닝이 보인다
버전 1.0.4의 Blender 검토용 렌더.

4. 보이는 문제 고치기

그다음 Apple Vision Pro에서 룸을 써 보고, 잘못된 점을 에이전트에게 알려 줍니다. 세 차례의 헤드셋 피드백을 요약하면 이런 프롬프트였습니다.

에이전트에게 보낼 프롬프트헤드셋에서 보니 스카이 룸 책상을 탭할 수 없고, 보이드 주변 안전 유리가 안 보이고, 오토만이 반대 방향을 보고 있고, 불꽃이 너무 커. 고쳐 줘.
에이전트에게 보낼 프롬프트등쿠션이 앞으로 기울어 있고, 좌석 두 개는 너무 깊고, 책상 램프는 너무 밝아.
에이전트에게 보낼 프롬프트수영장에는 모델링한 물 대신 Locus에 내장된 룸 수면을 써 줘.
남쪽 벽을 따라 놓인 떠 있는 듯한 오크 계단과 위층 바닥 아래의 주방 아일랜드
계단과 주방 아일랜드. visionOS Simulator에서 캡처.
주방 아일랜드를 향한 부클레 스위블 체어 두 개, 열린 유리 너머로 야외 다이닝
거실에서 주방 쪽을 본 모습. visionOS Simulator에서 캡처.

5. 프레임 레이트 개선하기

첫 빌드는 헤드셋에서 느렸습니다. 매끄럽게 만들기까지 이런 프롬프트를 썼습니다.

에이전트에게 보낼 프롬프트헤드셋에서 왜 이렇게 느려요?

에이전트가 룸 전체를 살펴보니 텍스처가 모두 1억 6,500만 화소였고 실시간 스포트라이트가 8개 있었으며, 고칠 방법을 제안했습니다.

에이전트에게 보낼 프롬프트그렇게 해 주세요. 보는 거리에 맞춰 텍스처 크기를 조정하고 실시간 스포트라이트를 줄여 주세요.
에이전트에게 보낼 프롬프트모든 조명을 라이트 레이어에 베이크해서 실시간 조명이 하나도 남지 않게 해 줘.

텍스처는 1억 6,500만 화소에서 3,300만 화소로 줄었습니다. 결국 모든 조명을 켜고 끌 수 있는 다섯 그룹 중 하나에 베이크해서, 실시간 스포트라이트는 남지 않았습니다. 베이크 때문에 다운로드는 다시 커져서 지금은 약 118MB입니다.

더 자세한 이야기

궁금하신 분들을 위해, 이 룸이 만들어진 이야기를 조금 더 풀어 봅니다.

얼마나 걸렸나요?

하루 정도입니다. 10월 23일 저녁에 참고 이미지로 시작했고, 다음 날 아침에 첫 완성 버전이 나왔습니다.

4단계와 5단계의 헤드셋 수정은 그 뒤 몇 차례 피드백을 거치며 이루어졌습니다.

비용은 얼마였고, 어떤 서비스를 썼나요?

많지 않습니다. 돈을 낸 건 이게 전부입니다.

  • Scenario: GPT Image 2로 의자 제품 이미지 6장, Rodin Gen-2.5로 이미지-3D 모델 8개(그중 2개는 재생성). 모두 750 CU.
  • OpenAI Images: 요청 6회로 돌 텍스처 2종, 벽난로 위 작품, 책등 아틀라스, 결국 쓰지 않은 올리브 잔가지 2개. 약 0.30달러.
  • fal: 의자 하나로 해 본 3면도 이미지-3D 테스트, 1.35달러. 결과물은 하나도 쓰지 않았습니다.

이미지 생성은 ChatGPT 구독에 포함된 사용량으로 할 수 있고, API 키는 필요 없습니다. 저희는 어쩌다 보니 Scenario와 API를 썼을 뿐입니다.

다른 생성 서비스는 쓰지 않았습니다. Tripo, Meshy, Hunyuan3D, Trellis도 쓰지 않았습니다. 이 비용은 청구서가 아니라 기록된 사용량입니다.

Locus 자체도 바꿔야 했나요?

몇 가지 있었습니다. 이만큼 큰 룸은 앱의 한계에 몇 번 부딪혔습니다. 수정 사항은 모두 출시되었으니, 비슷한 룸이라면 따로 할 일 없이 혜택을 받습니다.

  • '좌석'을 열면 스카이 룸에서 2–3fps까지 떨어졌습니다. 좌석 마커마다 집 전체를 대상으로 시야선을 1초에 열 번씩 다시 확인했기 때문입니다. 이제 마커는 사용자나 마커가 움직일 때까지 시야선을 유지하며, 비용은 프레임당 300–450ms에서 1ms 미만으로 줄었습니다.
  • 불꽃이 진짜 3D 불꽃이 되었습니다. 먼저 가로로 긴 버너의 불꽃이 버너 자신의 평면에 머물게 했습니다. 그다음 종이를 오려 붙인 것 같던 납작한 불꽃을 볼륨이 있는 불꽃으로 바꿨고, 이제는 버너 6cm 위가 아니라 버너에서 바로 피어오릅니다.
  • 테라스의 한 좌석에서 좌석 이동 오버레이가 겹치면 수영장 물이 사라졌습니다. 이제 오버레이가 뒤에 있는 것을 가리지 않습니다.
  • 위층 좌석에서는 View의 나무가 불편할 만큼 가까이 보여서, 이제 룸이 View의 가까운 풍경을 숨길 수 있습니다.
  • 그룹으로 묶였거나 일부가 가려진 좌석 마커(위층 책상의 마커처럼)를 이제 바로 선택할 수 있습니다.
  • 헤드셋에서 무엇이 프레임 레이트를 떨어뜨리는지 찾기 위해, 불꽃이나 투명한 면을 끄는 내부 스위치를 추가했습니다.

룸 수면과 베이크된 라이트 레이어는 원래 Locus에 있던 기능입니다. 언덕 위의 빌라는 그걸 그대로 씁니다.

Apple Vision Pro에서 얼마나 잘 돌아가나요?

헤드셋에서 버전 1.0.2를 측정했습니다. 앉은 시점은 90fps를 유지했습니다. 갤러리 서재 좌석은 61–69fps였고, 불꽃을 끄거나 투명한 면을 숨기면 90에 도달했습니다.

이 수치는 성능 로그가 추가된 Locus 디버그 빌드에서 측정한 것으로, App Store 버전에는 이 기능이 없습니다. 직접 만든 룸이라면 헤드셋에서 본 것을 설명하고 텍스처, 삼각형, 조명은 에이전트에게 확인하게 하세요.

이 룸에는 아직 GPU 텍스처 압축을 적용하지 않았고, 현재 버전의 편안함과 성능도 다시 측정하지 않았습니다.

중간에 어떤 문제가 있었나요?

  • 생성한 가구가 앱에서 검게 보였습니다. 러프니스와 메탈이 텍스처 하나에 묶여 있었기 때문이고, 나누니 해결됐습니다.
  • 책이 선반에서 최대 0.6m까지 떠 있었습니다. 책마다 엉뚱한 원점을 기준으로 회전했기 때문입니다.
  • 등쿠션이 앞으로 기울었습니다. 부호 하나가 틀렸기 때문입니다.
  • 같은 머티리얼을 모두 재사용하는 건 똑똑해 보였지만, 메모리가 약 132MiB 늘어서 그만뒀습니다.

언덕 위의 빌라는 Locus에서 무료입니다. 라이브러리의 '저택' 시리즈에서 찾을 수 있습니다.

언덕 위의 빌라 받기 · 나만의 룸 만들기