300x250

Unity를 활용하여 Parametric Design Program을 만드는 과정을 기록하고, 개발에 필요한 내용들을 정리하고자 한다.

먼저 이 글에서는 가장 시간이 많이 들고, 오류도 많이 발생하고, 짜증나지만 피해갈 수는 없는 '환경 세팅' 내용을 다룰 것이다.

 

github 링크는 아래와 같다.

https://github.com/JJukE/Metaverse_Capstone

 

GitHub - JJukE/Metaverse_Capstone: Metaverse Project

Metaverse Project. Contribute to JJukE/Metaverse_Capstone development by creating an account on GitHub.

github.com

 

 

목차

     

     

     

     

     

    0. Introduction

     

    Parametric Design Program이란, Unity의 VR Interactive Platform 내에서 동작하는 프로그램 중 하나로,

    VR 환경 내에서 기계 부품들의 parameter 변화에 따른 부품 형상 변화를 관찰할 수 있는 프로그램이다.

     

    가장 주요한 기능은 기계 부품들의 중요 치수들(높이, 너비, 깊이, 지름 등)을 parameter로 설정하고, 이를 unity 내에서 prefab 특성을 바꾸어 원하는 치수를 입력하면 부품들이 그에 맞추어서 형태가 변하는 모습을 보이는 것이다.

    차후에 이러한 기능을 업그레이드하여 세부 부품 하나만 바꾸더라도 그에 따라 전체 부품들이 연쇄적으로 형상을 변화시키는 것을 목적으로 하며,

    당해 년도의 목표는 우선 중요 치수의 변화만 VR Interactive Platform 내에서 변화시키는 것이다.

     

     

     

     

     

    1. 프로젝트 생성 및 환경 설정

     

     

     

     

     

    1) 프로젝트 생성

     

    Unity의 버전은 '2020.1.17f1' 버전에서 진행하였으며,

    Unity hub에서 새 프로젝트 - VR 템플릿을 이용하여 프로젝트를 생성하였다.

     

    VR Project 생성

     

     

     

    2) Github 연동을 위한 Settings

     

    보통 default로 맞춰져있긴 하지만, 협업을 하는 팀원 중 한명이라도 혹시 다른 setting을 갖는다면 연동 과정에서 꼬일 수 있으므로, 아래와 같이 setting을 맞춰준다.

     

    왜 이런 세팅을 해주는지, 깃허브 연동을 어떻게 하는지 등 자세한 내용이 궁금하다면, 아래 링크를 참조하자.

    https://jjuke-brain.tistory.com/55

     

    Github로 Unity 프로젝트 관리하기

    Unity를 여러 개발자가 함께 개발할 때 프로젝트를 관리하려면 Github를 사용하는 것이 일반적이다. 평소 Github를 자주 사용했지만, 유니티를 사용할 때에는 여러가지 추가적인 작업들을 해주어야

    jjuke-brain.tistory.com

     

    먼저, 유니티 창 상단 메뉴바에서 Edit → Project Settings → Editor → Asset Serialization Mode를 Force Text로 설정해주어야 한다.

     

    Asset Serialization Setting

     

    그리고, Edit → Project Settings → Version Control → Version Control Mode를 다음과 같이 'Visible Meta Files'로 통일하여 설정해준다.

     

    Version Control Mode Setting

     

     

     

     

     

     

    2. Prefab 살펴보기

     

    Parametric Design을 적용할 Prefab은 다음과 같은 공작기계이다.

    이는 3D CAD로 설계된 STEP파일을 stl파일로 export시킨 다음 blender라는 프로그램에서 fbx파일로 변환시킨 것이다.

     

    Unity에서는 별도의 플러그인이 없는 한, STEP파일을 바로 불러올 수 없으며, 위와 같은 과정을 거쳐 fbx파일로 변환시킨 후 업로드해야한다.

     

    uploaded fbx file in Unity

    fbx파일로 변환하면 위와 같이 세부 부품들이 3D CAD에서와 달리 모든 세부부품들이 나열되어있는 형태로 나오는데, 이를 사용자가 3D CAD file에서와 같이 hierarchy를 지정해주어야 한다.

     

     

     

     

    3. 핵심 기능 구현을 위한 Practice

     

    프로그램의 핵심 기능인 부품 parameter 변경을 위한 실습을 진행해보자.

     

     

     

     

    1) Assets 디렉토리 설정

     

    우선, 나중에 파일들을 원활하게 관리할 수 있도록, 다음과 같은 구성을 해두는 것이 좋다.

    Assets 하위에 다음과 같은 구조를 갖도록 폴더를 생성하자.

     

    Assets Hierarchy

     

    Assets 하위 폴더들 각각을 간단히 설명하자면 다음과 같다. 프로젝트 생성 시 default로 존재하는 폴더들은 정렬을 위해 번호만 붙여준다.

    1. Scenes : 씬 변환을 하면서 VR Interactive Platform (전체 프로젝트)가 진행되므로, 여러 씬들을 저장할 폴더를 생성한다.
    2. Scripts : 기능 구현을 위한 C# Script들을 정리할 폴더를 생성한다. 
    3. Prefabs : 각 씬에서 사용할 여러 prefab들을 정리할 폴더를 생성한다.
    4. Images : 차후 여러 기능을 구현하면서 사용할 image 파일들을 이곳에 정리할 폴더를 생성한다.
    5. Models : 씬에서 사용할 모델들을 정리할 폴더를 생성한다.
    6. Animations : 애니메이션을 구현할 때, 해당 파일들을 저장할 폴더를 생성한다.
    7. Sounds : 사운드 재생을 위한 파일들을 저장할 폴더를 생성한다.

     

    이외의 폴더들은 VR을 구현하기 위해 생성된 폴더들이므로, 따로 수정하지는 않도록 한다.

    위 사진에서 볼 수 있듯이, 폴더의 내용물이 있으면 색이 칠해지고, 폴더의 내용물이 없으면 빈 형태로 표현된다.

     

    유의할 점은, 웬만해서는 윈도우즈 탐색기나 맥 finder에서 프로젝트 디렉토리를 수정하지 않도록 한다.

    왜냐하면 unity의 경우 모든 prefab 등의 파일들에 '.Meta'파일들이 생성되고, 이 파일 내에서 모델에 대한 치수 등의 다양한 작업들이 진행되는데, project 창 내에서 파일 위치 등을 변경할 경우 자동으로 이 파일도 변경되지만,

    탐색기나 finder에서 수정할 경우에 잘 반영되지 않아 Meta파일이 불필요하게 재생성되거나 수정한 파일의 정보가 날아가버리는 오류가 발생할 수 있기 때문이다.

     

     

     

     

    2) Scene 생성

     

    연습을 진행해볼 Scene을 생성한다.

    '01. Scenes' 폴더를 클릭하고, 빈 부분을 우클릭한 후에 Create → Scene을 선택한다.

    Scene의 파일명은 'Parametric Design'으로 하였다.

     

    Scene 생성

     

    이제 이 Scene에서 Parametric Design Program이 동작할 것이다.

     

    그리고 Parametric Design Program에서 치수를 변경시켰을 때, 적어도 연습하는 동안에는 이를 VR Interactive Platform 전체에 적용시키지는 않을 것이다.

    따라서 Model 파일을 하나 복사하여 'Parametric Design' Scene에서만 적용할 Model을 새로 생성시켜준다.

    하지만 Unity Project 창에서 모델을 복사할 수가 없다. (복붙 단축키도 먹히지 않고, 모델을 우클릭했을 때 복사와 관련된 항목은 보이지 않는다.)

    이때에는 '05. Models' 폴더에서 원하는 모델을

     

     

     

     

    3) C# Script 생성

     

    이제 본격적으로 C# Script에서 부품의 크기를 변경하는 스크립트를 작성해보자.

     

    먼저, '02.Scripts'에서 'Create → C# Script'로 스크립트 파일을 생성한 후 들어가보면 다음과 같은 코드가 보일것이다.

     

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class NewBehaviourScript : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
            
        }
    
        // Update is called once per frame
        void Update()
        {
            
        }
    }

     

    여기서 'using'부분은 Unity Engine에서 스크립트를 동작시키기 위한 라이브러리로 생각하면 되고,

    생성한 스크립트 파일명에 따라 'NewBehaviourScript'와 같이 이름이 붙게 된다.

    만약 Unity 프로젝트 창에서 스크립트 명을 변경을 하게 되면 해당 부분도 똑같이 변경해주어야 한다.

    예를 들어, 파일명을 'NewBehaviourScript → test_parametric_design'으로 변경했다면, 아래와 같이 직접 바꿔주어야 한다.

     

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class test_parametric_design : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
            
        }
    
        // Update is called once per frame
        void Update()
        {
            
        }
    }

     

    그리고 void Start()는 씬이 실행될 때 첫 frame에서 실행되는 함수로, 처음 씬을 재생시킬 때 default 상태를 설정해줄 수 있다.

     

    void Update()는 씬이 진행되면서 frame이 업데이트 될때마다 실행되는 함수이다.

    즉 우리눈에는 영상이 연속적으로 진행되는 것처럼 보이지만, 실제로는 정적인 이미지들을 연속적으로 빠르게 배치해서 업데이트해주는 것이므로, 뭔가 움직임을 주거나 씬이 실행되는 도중에 어떤 작업을 해주는 내용은 모두 void Update()에 포함시켜야 한다.

     

    다음 글에서 간단하게 버튼을 생성하고 해당 버튼을 눌렀을 때 MCT 모델의 겉부분(크기 변경을 가장 잘 확인할 수 있는 부품) 크기를 변경해보는 실습을 진행할 것이다.

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기