사용자 정의 캐릭터

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

NPC에서 모든 것을 만들기 위해 애니메이션 보트의 Animated 옷으로 모든 것을 가져올 수 있습니다. 우리는 아바타 가져오기(이제 3D 가져오기 )의 사용자 설정을 사용하여 더 이상 신비한 검은 구멍 생물 및 친절한, 의식 없는 서비스 드로이드와 같은 더 이상 이

다음 섹션에서는 리그 및 스킨, PBR(표면 모습) 및 VFX를 사용하여 크리처라는 이름의 가장 복잡한 캐릭터 중 하나를 빌드하는 방법에 대해 설명합니다. 우리는 그것이 빛을 내고, 일부 조인을 가진 리그 및 스

Creature Banner

리그

우리는 생물을 고정할 때 중립 자세로 캐릭터를 모델링하는 것이 좋습니다. 이 자세는 여러 방향으로 구부지는 것에 가장 적합하기 때문입니다. 우리가 그 촉수를 이미 구부뜨렸다면, 우리가 촉수를 반대 방향으로 구부뜨리는 것을 애니메이션하면

중립 자세에서 우리는 가장 많은 이동이 필요한 영역에 대해 관절을 경제적으로 추가했습니다. 가장 적은 관절이 더 나은 것입니다, 왜냐하면 캐릭터를 스킨할 때 관리해야 할 때가 많기 때문입니다. 주요 몸은 단일 관절을

다른 대부분의 관절은 손가락 및 입술 쪽으로 향합니다. 손가락 및 입술은 움직이는 것처럼 보이지만, 센터 마비는 센터 마비가 센터 마비인 경우가 많았습니다. 따라

Creature Front, Maya

다음 가이드라인이 유용하기를 발견했으므로 캐릭터 메쉬가 Studio에 올바르게 가져오도록 합니다.

  • 개별 관절 및 뼈는 고유한 이름을 가져야 합니다.
  • 메쉬는 관절 및 뼈와 같은 이름을 가질 수 없습니다.
  • 메쉬는 스킨/바인딩 전에 변환이 없어야 합니다. 즉, 변환은 0이어야 하고 스케일은 1이어야 합니다.
  • 메쉬 노멀은 외부 방향으로 노출되어야 합니다(모델은 안에서 볼 수 없어야 합니다).
  • 해골은 크기 조정 요소가 없어야 하며 모든 관절은 [1, 1, 1]이어야 합니다.

스킨

Creature의 해골을 완성한 다음 단계는 메쉬를 스킨하는 것이었습니다. 스킨은 힘든 작업일 수 있지만, 익숙하게 되면 좋아할 것입니다. 이 경우 조인트 및 윤곽을 따라 피부를 부드��

잘못된 스킨ning
부드러운 스킨ning

다음 가이드라인이 가장 좋은 피부 처리를 위해 생성된 것을 발견했습니다.

  • 스킨 영향(즉, 이동 시 모델의 일부에 영향을 미치는)은 4개의 영향 중 최대 4개여야 합니다.
  • 공동 및 메쉬 이름은 서로 다른 이름으로 유일하게 해야 합니다.
  • Studio에 가져올 공동 작업은 모델의 스킨을 영향을 주어야 하며, 그렇지 않으면 엔진이 가져오지 않습니다. 가능하면 원래 포즈나 "바인딩"에 모델을 스킨하십시오.

메쉬를 Studio로 가져오기

Studio에 사용자 지정 캐릭터를 가져오는 것은 이 과정의 가장 흥미로운 부분 중 하나입니다, 왜냐하면 사용자 지정 캐릭터를 체험에서 볼 수 있기 때문입니다!

메쉬를 Studio로 가져오려면:

  1. DCC 응용 프로그램에서 캐릭터를 내보내고 팔로잉확인하세요.

    • 모든 일반, 저울, 이름이 올바르게 표시됩니다.
    • 캐릭터에는 모든 관절 및 뼈 계층 및 모든 메쉬가 있습니다.
    • 메쉬는 모두 메쉬의 각 부분에 대해 10,000개의 삼각형 이하입니다.
    • 메쉬 총 크기는 2000개 축에 대해 2000개 이하입니다.
    • 모델 사양의 전체 목록은 메쉬 요구 사항에 참조하십시오.
    Creature in DCC Tool
  2. In the 3D 가져오기 , import the custom .fbx 또는 .obj 파일.

    Creature Imported Into Studio

크리처 글로우 만들기

크리처의 모델이 안정적이고 Studio에서 더 이상 즉시 가져오지 않는 경우, 우리는 표면 모양 개체, 조명 및 시각적 효과를 결합하기 시작했습니다. 우리는 모델의 품질이 좋은 상태에서 모든 측면을 배치하고 편집하기 전에 진행하기 위해 이것을 했습니다.

Glowing Creature Example

우리는 생물이 어둡게 되기를 원했고, 초점이 눈과 그것의 "grabby" 촉수를 가질 것을 알고 있습니다. 대비가 높은 점은 눈을 끌기 쉽기 때문에 몇 가지 강한 것을 확인하는 것이 좋습니다. Studio는 네온

Creature Eyes in Studio

네온 재료는 실제 빛을 방출하지 않으므로 일부 테스트 후 우리는 조명 배치 및 조명 방출의 방향을 제어하기 위해 별도의 부품을 추가했습니다. 이것은 빛이 눈을 향하여 향상되도록 조명을 방향 및 배치하는 방법을 보장했습니다.

Point Light in Studio

크리처나 다른 표면 또는 플레이어 근처에 있는 생물에 시각적 샤이드를 추가하는 SpotLights의 시각적 샤이드를 알아보세요.

Creature Light Example

또한, 우리는 크리처의 촉수가 일부 입자를 방출하기를 원했기 때문에 움직이면 연기 트레일을 남겨 둘 수 있었습니다. 촉수가 매우 긴기 때문에 촉수 전체에 ParticleEmitter를 추가하면 입자가

Particle Example

캐릭터에 따라 VFX 만들기

피부 색상의 메쉬 위치는 크리처 애니메이션이 업데이트되지 않기 때문에 피부 색상의 메쉬 위치는 업데이트되지 않습니다. 따라서 크리처에서 뼈가 있는 곳에 대한 VFX, SFX 및 라이트를 올바르게 표시하기 위해 메쉬 컨트롤러 스크립트를 만들고 컬렉션 서비

  1. 우리는 다음 LocalScriptStarterPlayerStarterPlayerScripts 에 배치했습니다. 이것은 기본적으로 VFX 업데이트 기능을 실행합니다.

    로컬 스크립트

    -- PreSimulation을 사용하는 기존 로컬 스크립트에 이 스냅샷을 추가하십시오.
    -- 연결
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    모듈 스크립트

    -- 이 모듈은 애니메이션에 부착된 부품이므로 업데이트됩니다.
    -- 애니메이션이 재생됩니다. 현재 제한을 위한 작업 회피
    -- 관절과 뼈로 구성되어 항상 필요한 것은 아닙니다.
    --
    -- 필수 요구 사항:
    -- 포함되려면 "AnimatedVfxModel" 태그와 폴더가 필요합니다.
    -- 애니메이션과 동기화할 모든 부품. 각 부품에는
    -- “AttachedBoneName”이라는 특성이 있으며 이는
    -- 뼈를 연결하려는 부품. 부품은 이미 있어야 합니다.
    -- 원하는 뼈와 상대적으로 올바른 위치.
    --
    -- 사용하려면:
    -- 로컬 스크립트는 이 모듈을 요구해야 하고 연결해야 합니다.
    -- RunService.PreSimulation 이벤트에 VfxUpdateModule.updateVfx를 업데이트합니다.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- 세트업 - 이 작업은 모든 클라이언트에서 한 번만 실행됩니다.
    -- 태그로 모든 모델 수집
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- 여기에서 모든 부품 및 오프셋을 저장합니다.
    -- 모든 VFX 부품과 오프셋을 포함할 테이블 할당
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Find theVFX 폴더
    -- 특성을 통해 뼈를 찾고 각 부품에 대한 오프셋을 계산합니다.
    for _,part in vfxParts do
    local name = part:GetAttribute("AttachedBoneName")
    local bone = model:FindFirstChild(name, true)
    if bone then
    local offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)
    vfxTable[model][part] = {bone, offset}
    else
    warn("Vfx part refers to bone that could not be found.")
    end
    end
    end
    print(vfxTable)
    -- 업데이트 - 이것은 모든 클라이언트의 RunService.PreSimulation에 연결해야 합니다.
    -- 모든 모델을 검토한 다음 모델에 있는 모든 부품을 업데이트하여 골격 프레임을 일치시키십시오.
    function VfxUpdateModule.updateVfx()
    for model, vfxParts in vfxTable do
    for part, bone in vfxParts do
    part.CFrame = bone[1].TransformedWorldCFrame * bone[2]
    end
    end
    end
    return VfxUpdateModule
  2. 우리는 VFXUpdateModule ModuleScript를 만들어 플레이 이벤트에 적절하게 태그된 모든 개체를 업데이트하려고 합니다.

  3. 태그 편집기를 사용하여 필요한 모델 그룹에 필요한 모델을 태그하십시오. VFXUpdateModule 에서 보기 탭에서 액세스할 수 있는 Tag Editor를 사용하여 업데이트할 모델을 첫 번째 VFX 자식으로 검색하고 업데이트를 적용할 수 있습니다. 태그를 사

    VFX In Studio Example
  4. 마지막으로, 우리는 부품에 애착된 뼈 이름 추가하고 팔로우할 관절의 정확한 이름을 추가했습니다.

크리처 텍스처링

다음으로, PBR(물리적 기반 렌더링) 텍스처 맵을 설정합니다. 이 강력한 비트맵은 크리처에게 다양한 윤곽과 표면 변화를 제공하여 작은 흠과 결함이 많이 보이게 합니다. 이 시각적 효과는 플레이어와 더 가까이 있을 때 크리처의 모습을 판매하는 데 도움이 됩니

Creature Texturing Comparison

다음은 표면 모양 텍스처 맵을 만드는 방법입니다.

  1. 이 캐릭터의 텍스처 맵은 모두 "맵 하나"에 있었습니다. 이것은 생물 효율을 높이고 텍스처 맵이나 SurfaceAppearance 개체를 처리해야 하는 경우가 적었습니다.

  2. 빛나거나 자체 조명을 사용할 필요가 있는 영역, 예를 들어 "grabby tentacles"과 같은, 우리는 또한 SurfaceAppearance 에 투명도를 사용하여 이 부품과 혼합하기 위해.

    Illumination Example

    표면 모양 텍스처 맵을 생성할 때 이 가이드라인을 따르는 것이 좋습니다.

    • 맵이 1024×1024보다 큰 경우 캐스터를 사용하여 축소하십시오.
    • 작업 중인 응용 프로그램에 따라 녹색 채널을 뒤집어야 할 수도 있습니다.

생물 애니메이션

애니메이션은 매우 주관적이며 개인 스타일을 가지고 있습니다. 옵션에는 이동 캡처, 손 "키 프레임" 애니메이션을 DCC 응용 프로그램에 사용하거나 Studio의 강력한 애니메이션 편집기를 사용하는 것이 포함됩니다.

이전에 언급했듯이 우리는 유체 이동을 위해 충분한 관절을 가지고 싶었으며, 또한 충분한 팔다리를 가졌기를 원했습니다. 그래서 생물 애니메이션이 자연스럽고 "층위"인 것처럼 느껴지도록 했습니다. 중첩, 또

여기에서 볼 수 있듯이 이 기술을 사용하여 생물이 자신의 신체에 대한 움직임에 반응하는 것처럼 보이게 했습니다.

Creature Animation Example

애니메이션에 대한 외부 DCC 응용 프로그램을 사용하는 경우 다음 가이드라인이 가장 좋습니다.

  • 프레임 속도를 최소 30 FPS로 설정합니다.
  • 적용하는 캐릭터와 동일한 애니메이션을 만듭니다.
  • 애니메이션 데이터를 별도의 .fbx 파일로 내보내세요.

Studio 외부에서 캐릭터를 애니메이션화하기 때문에 애니메이션 파일 .fbx 을 가져오기 위해 애니메이션 편집기를 사용해야 했습니다. 편집기는 조인트 또는 모터가 있는 모든 아바타를 선택할 수 있으며 시간 순으로 드라이브를 통해 운전할 수 있습니다.

애니메이션을 가져오려면:

  1. 애니메이션 편집기를 플러그인 탭에서 선택합니다.

    Animation Editor In Studio
  2. Roblox에서 애니메이션하려는 리그된 캐릭터를 선택하십시오. 캐릭터는 외부 DCC 응용 프로그램에서 리그하는 것과 동일해야 합니다.

  3. 편집기 창의 왼쪽 상단 부분에 있는 버튼을 클릭하고, .fbx를 선택하고, 내보낸 .fbx 애니메이션 파일을 찾습니다.

    Animation Import Example 1 Animation Import Example 2
  4. 애니메이션에 만족하면 애니메이션 ID를 확인하기 위해 내보내고 Roblox 스크립트에서 실행할 수 있습니다. 예를 들어, 가져온 캐릭터의 모델 그룹에 Script를 추가하고 다음 코드를 사용하여 애니메이션을 실행할 수 있습니다.

    Animation Script Example

    local animationId = "YOUR_ANIMATION_ID"
    local char = script.Parent
    local animController = char:FindFirstChildWhichIsA("Humanoid") or char:FindFirstChildOfClass("AnimationController")
    local animation = Instance.new("Animation")
    animation.AnimationId = "rbxassetid://" .. tostring(animationId)
    local animTrack = animController:LoadAnimation(animation)
    animTrack:Play(0, 1, 1)

최종 결과

몇 가지 색상, 조명 밝기 및 몇 가지 입자 효과를 더 적용하여 창문 앞에서 더 강한 망토 효과를 제공하기 위해 마지막 결과를 작성 스테이션에서 공개합니다!

Final Creature Rendering