블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2737)
Unity3D (817)
Script (91)
Extensions (14)
Effect (3)
NGUI (77)
UGUI (8)
Physics (2)
Shader (36)
Math (1)
Design Pattern (2)
Xml (1)
Tips (200)
Link (22)
World (1)
AssetBundle (25)
Mecanim (2)
Plugins (70)
Trouble Shooting (68)
Encrypt (7)
LightMap (4)
Shadow (4)
Editor (8)
Crash Report (3)
Utility (9)
UnityVS (2)
Facebook SDK (2)
iTween (3)
Font (11)
Ad (14)
Photon (2)
IAP (1)
Google (8)
Android (45)
iOS (41)
Programming (474)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (228)
협업 (58)
3DS Max (3)
Game (12)
Utility (136)
Etc (96)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (53)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday
04-26 06:22


링크 : http://wlhermit.blog.me/220061141482


원본 링크 : http://darkgenesis.zenithmoon.com/so-you-want-to-be-a-unity3d-game-developer/



So you want to be a Unity3D game developer?

UnityDeveloper

Unity3D has been making great strides of late, it’s has been one of the big go-to middleware engines for budding iOS and Android game developers and even expanded its reach to Web, Windows desktop and other platforms.

It’s recent Microsoft partnerships have also been making big waves and have spurred on its adoption, introducing both the Windows Phone 8 and Windows 8 platforms and more recently with the announcement of Xbox One support, best of all it’s completely free for all Microsoft platforms.

Unity3D comes in three flavours:

 Unity3D Trial

When you first download Unity3D and setup a new account you get access to all of Unities tools and accessories that are included in the Pro version for 30 days, after that it will revert to the Free version or you can pay for Pro.

 Unity3D Free

As it says on the box, this is the default Free tier for Unity, you get access to the editor and all the basic features, however some advanced performance, profiling and graphics features are disabled.  You can still make one heck of a game if you do it right and it’s perfect while you are learning Unity.  But once your game gets beyond a certain size you may find the lack of the pro features limiting.

 Unity3D Pro

Basically every tool and feature of Unity at your disposal including LOD support, texture batching, asset streaming, custom splash screens, 3D textures and HDR, the list goes on – see Unity Pro detail page for more details and a comparison of the Pro vs Free features.


So how to get started?

As with my Monster links post, I’ve compiled an extensive list of resources at your disposable on your Unity3D journey, split up in to sections to allow you to target what you need.

Beginner tutorials

Intermediate tutorials

2D specific tutorials

Project based training – learn by doing

Video based tutorials

Unity3D component tutorials

Unity3D master sites – Unity training is just their thing

Unity3D paid for training

Scripting links and help

Design or 3D modelling help

Shader help and tutorials

Performance and architecture

Platform specific

Animation and Mecanim

Generic Tips and Tricks

Multiplayer tutorials

Music and Audio

Unity addons and engines

Cloud and backend systems

Help and forums

Sample Projects

Resources

Other things to check


On with the show

If you know of any other stella resources out there that will help out a new comer to Unity3D or a set of advanced tutorials and resources then be sure to comment below and I’ll add them in.

Like the other “Monster Set of Resources” post, I try to keep these up to date with new additions as I find them.

Party on.


반응형
Posted by blueasa
, |

AnimationClip의 Type을 바꾸려고 fbx-rig에서 Generic/Legacy 등으로 바꿨는데 다른 방법을 다른분이 올려주셔서 올려 놓음.


1) 유니티에서 AnimationClip 파일 선택.

2) Inspector창의 Inspector가 써진 탭에서 마우스 우클릭하면 팝업 메뉴가 뜬다.

3) 기본 Normal로 돼 있는데, Debug로 바꾸면 숨겨진 메뉴가 뜸.

4) m_AnimationType을 원하는 타입의 숫자로 바꿔주면 된다. 값은 대충 아래와 같은 듯..


enum AnimtionType

{

None = 0,

Legacy = 1,

Generic = 2,

Humanoid = 3,

}


참조 :  하이에나 2014.06.30 18:35:33 댓글달기

애니메이션 클립 선택하시고 Inspector 모드를 Debug로 바꿉니다. 
그러면 숨겨진 변수들이 나오는게 거기서 Type을 1로 해주면 Legacy 타입으로 바뀌어요


출처 : http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=48480&page=0&sca=&sfl=&stx=&spt=0&page=0&currentId=44#c_48534

반응형
Posted by blueasa
, |

출처 : http://gpgstudy.com/news/item/1089


Link : http://egohim.blog.me/220043935476

반응형
Posted by blueasa
, |

출처 : http://gpgstudy.com/news/item/1088


링크 : http://www.gamedev.net/page/resources/_/technical/game-programming/pathfinding-and-local-avoidance-for-rpgrts-games-using-unity-r3703

반응형
Posted by blueasa
, |

유니티 관련..

Unity3D/Tips / 2014. 6. 28. 03:13


Link : http://unitycoder.com/blog/

반응형
Posted by blueasa
, |
안녕하세요 유니티스터디에서 도움만 받는 잉여 회원 입니다.
 
로딩 페이지 구현? 에 고생해서 정식으로 유니티스터디를 통해서 올립니다.
 
 AsyncOperation.progress라는 놈이 pc에서는 제대로된 값을 얻을 수 없어서 삽질을 많이 하셨습니다 ㅠㅠ
 
using UnityEngine;
using System.Collections;
public class EnterLoadPage : MonoBehaviour {
 
 public UISlider  Script;
 public UISlider  ScriptPercent;
 public UILabel  textScript;
 
 AsyncOperation   async;
 
 bool IsLoadGame = false;
 
 public IEnumerator StartLoad( string strSceneName )
 {
        if (IsLoadGame == false) 
        {
            IsLoadGame = true;
            
            AsyncOperation async = Application.LoadLevelAsync ( strSceneName );
        
            while(async.isDone == false) 
            {
                float p = async.progress *100f;
                int pRounded = Mathf.RoundToInt(p);
    
                textScript.text = pRounded.ToString();
 
                //progress 변수로 0.0f ~ 1.0f로 넘어 오기에 이용하면 됩니다.
                ScriptPercent.sliderValue = async.progress;
                
                yield return true;
           }
        }
    }
 
 void Start()
 {
       StartCoroutine( "StartLoad", "SceneGame" );
 }
 
 float fTime = 0.0f;
 
//로딩 페이지에서 연속으로 애니메이션 만들때 Update 함수 내에서 만들면 됩니다.
 void Update () {
  fTime += Time.deltaTime;
  
      if( fTime >= 1.0f )
      {
            fTime = 0.0f; 
      }
  
        Script.sliderValue = fTime;
  }
}
 
 
사용법은
 
Scene과  로딩 부하가 심한 Scene 사이에 해당 ScenePage를 추가 하여 사용하시면 됩니다.
 
ex)
 
SceneMenu -> SceneLoadingPage -> SceneGame
 
 
읽어 주셔서 감사합니다.



출처 : http://www.unitystudy.net/bbs/board.php?bo_table=tip&wr_id=52

반응형
Posted by blueasa
, |
이번에 감사하게도 페이스북 데브코리아 페이지의 이벤트에 담첨되어, 유나이트 코리아에 무료로 참석하게 되었습니다.

많은 인파가 몰려서 약간 정신 없기도 했었던 컨퍼런스 였지만 유익한 정보를 많이 얻어갈 수 있어서 참 기분이 좋았습니다.

유니티 5.0에서 추가되는 기능들에 대한 설명을 들을 수 있었구요.

뉴비 프로그래머인 저에게 도움이 되는 기술적인 테크닉을 알려주는 세션도 있었습니다.

이 좋은 내용들을 어떻게 나눌까 고민하다가 

즉흥적으로 메모했던 부분들을 첨부할까 합니다. 

좀 내용이 일관적이지 않고 앞뒤가 맞지 않지만 키워드 정도는 참고 가능하실지도 모를까 싶어 올립니다.

다음에도 이런 좋은 이벤트가 많이 열려서 데브코리아에 항상 상주하시는 개발자 분들과의 소통이 많이 되었으면 좋겠습니다. 

감사합니다!

ps1. 첫째날 세션4 유니티를 이용한 아키텍쳐 강의 프로젝트 파일을 다운받을수 있는 주소와
둘쨋날 세션4 더욱 강력한 C# 활용 강의 프로젝트 파일 주소를 받을 수 있었는데
혹시 몰라서 댓글 달아주시는 분께 비밀댓글로 알려드리도록 하겠습니다.


Day1 
세션 1.
메가님 그리고 그 이상을 뛰어넘어.
유니티 Pierre Paul Giroux


엔트리, 엑셉트 노드 추가.
스테이트 머신의 전환이 심플하게 가능해짐

idle이 여러게일 경우 많은 상태가 필요해 꼬이기 마련.
이걸 해결할수 있는 방안.

디시즌 노드를 FSM에 추가함.

아이들 머신이 자급자족이 가능.. (여러게의 아이들)

스테이스 모델들끼리 공유가 가능.
에셋스토어에서 판매가능

스테이트머신 비헤이비어 추가.

onStateEnter
엔트리에 들어갈때

onStateUpdate
엔트리 업데이트.
모든 프레임에서 이루어짐

onStateExit
끝날때

OnStateMove

onStateIK

스테이트머신이 자립.

애니메이션 연동해 이팩트 호완 가능..

이팩트 또한 연동작업이 가능.

메카님 코드를 완전히 공게

네비게이션 빌더.

프리뷰 화면 줌아웃 페이드 인 가능.

블랜드 쉐이프

캐릭터 표정 원프레임 애니메이션을 활용.

다이렉트 블랜드 트리 추가됨 5.0
(웃으면서 눈깜밖임, 입 벌리며 웃기)

5.0추가 되는 기능  정리..

스테이트 머신 전환 
간단하게 스테이트머신 로직 활용.

스테이트머신 비헤이비어
코드 로직을 스테이트 내에 바로 넣을수 있게 해줌.
idle, 트레일 렌더러 추가.

루트모션 애니메이션
2d게임에서 애니메이션 활용.
2d 네비게이션.

디렉트블랜드 트리
애니메이션 가중치를 직접적으로 연결.

루트 애니메이션 이슈..

Question..

애니메이션이 많아질 경우.. 메모리 문제 발생..

애니메이터는 프로그램 시작시 모두 로드가 됨.

애니메이션 옵티멀 기능을 꼭 사용해봐라.

예를 들어서 굉장히 괜 애니메이션이라도. 애니메이션이 1메가라면..

옵티멀 압축모드 사용해봤는지?

2.0 ~ 3.0시절의 애니메이션 기능이 사라진 경우에 대한 질문

애니메이터에서 연결되어서 사용되야 함.

애니메이터 사용시 메모리 할당이 많이 되어서 문제다..

레거시 모드... -> 중장기 적으로는 없애는 기능..


세션2.
유니티로 멀티플레이 게임 만들기, UNET
유니티 Erik Juhl

멀티 플레이 파운데이션 

피드백 받으려고 함

MMO까지 가능한 파운데이션을 제공해주려 함.

멀티 플레이 파운데이션은 뭔가?

전문가 적인 인프라 툴

로우레벨 api 소켓처럼 인터페이스가 됨

하이레벨 api 도 제공함.

네트워크 엔지니어 아니더라도 개발을 하려면 하이레벨이 정답.

메치 메이커. 

비전

phase 1
multiplayer foundation
not in 5.0 but releaed in unity 5.x

phase 2
server authoritative gameplay
being re

phase 3
..

why create the multiplayer foundation.
하이레벨로 먼저 개발해서 제공.. 네트워크 개발자들이 불만.. (레거시 시스템)

빠른 숙도가 요구되는 게임은 UDP 

MMO 동자원 문제.

이벤트 드리븐 IO

하이레벨 스크립트 api

서버와 클라이언트 하이레벨에섯 지원

네트워크 메시지를 주고 받을수 있고

클라이언트 서버모델이 기본적으로 설치되어 있음

클라이언트에서 서버로 바로 메시징

서버에서 클라이언트로 이동

클라이언트들끼리의 통신은 없음.
(로우레벨을 사용하여야 함)

Engine and ediotr integration

세션3
Asset Store 등록과 절차 소개
유니티 조현태

1. 에셋스토어 소개
2. 에셋스토어 활용법
3. 에셋 스토어 등록방법

에셋 스토어란 ?

장난감 상점..

에셋 = 장난감 = 리소스
게임을 제작할 때 필요한 모든 리소스
아트, 프로그래밍, 사운드, 템플렛

에셋 + 게임 제작 병행
- 에셋 스토어의 판매수익을 바탕을 게임 제작
제작한 게임 내의 자체 제작한 에셋을 에셋 스토어에서 판매.



에셋 스토어 활용.
다양한 애니메이션 셋
Mixamo <- 유명한 애니메이션 에셋.
수백게의 모델과 수천게의 애니메이션 제공

Particle Playground <- 파티클 에셋.

게임사운드 

Retro sound fx, 
효과음, 
배경음악, 각족 오디오 툴, 보이스 바니(캐릭터 대사를 글로 작성해 보내면 녹음해서 보내줌)

효율적인 프로그래밍

스크립팅 툴
플레이 메이커, uscript, nodify

쉐이더 프로그래밍 툴
shader forge
strumpy shader editor
shader fusion

AI스크립팅 툴
Befave 2 for unity
plyGAme
plyBlox

에셋 스토어 등록

1. 한번 올린 에셋은 영구적으로 판매가능
2. 서포트는 판매자가 직접 제공
3. 수익은 판매자와 유니티가 7:3으로 배분
2주에 한번씩 송금.

에셋 스토어 계정 만들기 - > 퍼블리셔 셋팅 -> 팩키지 올리기 -> 등록완료 검수를 기다림.


1. 가입하기

E-mail
password, 
repeat password, 
firstname, lastname, 
organization or company, 
address1, 
address 2, 
zip or postal code, 
city, 
country, 
phone number, 
vat number

2. 퍼블리셔 셋팅

퍼블리셔 유얼 에셋 버튼 클릭 -> 다운로드.

Asset Store Tools

publisher account

unity3d.com 홈페이지 가서 에셋 스토어의 publisher login 

paypal 페이팔 가입해서 2주에 한번 송금받는 방법. 
wire  한번 송금에 20 달러 250이하는 안됨


Asset Store Tools 에서
에셋스토어 등록.


세션4
유니티를 이용한 아키텍쳐
유니티 Rustum Scammell
Architecting GAmes in Unity
Common pattern.

Broken Windows
fix the windows
int new tork city, albuquerque and the netherlands, improving the physical appearance of a beighbourhood has been shown to reducecrime and increase quality life
people are influenced by their environment
social norms and conformity
routine monitoring

에셋 리스트 폴더관리.

good architecture = good standardss
use c#
Naming conventions.

switch-case 복잡함.

delegates 런타임 메모리가 항당되어 별로.....

delegates[] 사용!


Implementing Gameplay

싱글턴,

Pool Based Object.

bast-Practices

use c#
naming conventions
logical folder structure
zero-toler

Day2
기조연설 2
SquareEnix 드래곤 퀘스트의 모바일 개발과 전개

hatakeis@square-enix.com

스퀘어닉스 그룹.


모바일 사업 
- ios app 120 titles
- android os 80 titles

장점.

Single DL Contents(Premium)
싱글다운로드가 장점이다.

Free to Play Contents(Freemium)

드래곤 퀘스트

28년전 처음 출시.

국민적인 RPG.

드래곤 퀘스트 8 출시. 
유니티로 개발.

드래곤퀘스트  포탈
DQ overall information site
Platform Application of DQ1~ 3 treated as In-app purchse
DQ liaison page for smart phone

DL Status of DQ portal

over 4,000,000 for only 3 month

배경으로는 드래콘 퀘스트 1을 기간한정 무료 프로모션을 함.

드래곤 퀘스트 1의 무료 배포의 의미는..

드래곤퀘스트 1의 다운로드가 아닌 드래곤퀘스트 포탈의 다운로드...

드래곤 퀘스트 포탈에서 다운로드 받음... 인앱결제도 여기서..

400만명에게 다양한 프로모션이 가능해짐.

가장 마케팅적으로 좋은 솔루션은 푸쉬...

푸쉬 알림을 함으로서 스토어에 구입하려는 사람이 많음(구체적인 숫자는 노코멘트)



What's the titles with using Unity... 

스퀘어 에닉스 테크니컬 메니저(발표자 바뀜)

드래콘 퀘스트 8 포팅하는데 있어 유니티와 어떻게 활용을 했는지

모바일 개발을 위해서 모바일 개발의 트렌드에 대해 얘기를 한다.



1. 모바일 게임업계의 현제와 미래
2. 유저인터페이스와 게임디자인 (드래곤 퀘스트 8 에서 인터페이스와 디자인)
3. 스퀘어 에닉스와 유니티의 관계 스퀘어 에닉스가 유니티에서 포팅한 게임의 겟수.


먼저 모바일 게임의 현재와 미래..

진화하는 속도가 빨라지고 있다.

지금 현재와 미래의 전망.

현재 휴대폰 사양
cpu 32bit, 64bit,
gpu multi-core
graphics api
opengl es 1.1, 2.0 , 3.0
ram 1.0GB 
storage
64GB

콘솔과 같은 형태로 개발이 가능해지고 있다.

대용량 디바이스의 등장.. 과 우리가 어떤 타이틀을 만들것인가?


드래콘 퀘스트 8 포팅...

콘솔 타이틀을 손바닥 크기로.. 프레임 안정적.

콘트롤러의 수요..가 있고 대응하고 있음.... 

폰에서 피씨로 포팅... 그러기 위해서는 컨트롤러 대응 해야됨.


일본 스마트폰 시장 50% 점유율

역포팅 작업중.. pc 플스 엑박.. 닌텐도

유저 인터페이스 디자인.


세로 화면을 기준으로 개발..
플레이어가 편하게 실행 

전철에서 게임을 플레이 하는것을 타겟으로..

게임의 메인 유아이를.. 잘쓰는 손에 맞춰서 변경할 수 있도록 함.

이런부분을 세세하게 케어 해줘서 플레이를 손쉽게 즐길수 있또록 함.


게임 데이터.

스마트폰을 사용할때는 보통 멀티테스킹 작업.. (메일, 웹, etc)

어플리케이션을 많이 기동할수록 램이 부족해짐..

램이 부족해지면 백그라운드 프로그램 종료..

그래서

오토세이브를 생각했다.

자동으로 종료가 되면 자동저장이 된다.

자동저장이 없을때 많은 불만사항들이 생겼지만..

구현해서 적용 후 많은 호평을 받았음.



스퀘어 에닉스와 유니티의 관계..


유니티를 이용한 타이틀 9개
성검전설, 드퀘8, 데드맨즈 크로즈, 

왜 유니티를 사용하는 기회가 늘어났는지

유니티가 왜 활용하기 쉬운지..

많은 사용자로 인해 쉬운 대응이 가능.

커스텀마이징이 뛰어남.(?)

개발환경의 원 페키지 화.

소스를 재활용 해서 사용이 가능.


세션 1
유니티에서 웹개발의 미래
유니티 Jonas Echterhoff

아시아 시장이 사용량이 가장 많다.

HTML5 로 오면서 플러그인이 필요가 없어졌다.
(플러그인이 내장되어 있다.)

왜?

보안, 통제권 떄문에 브라우저 회사는 플러그인을 좋아하지 않는다.

플러그인은 점점 통제권이 사라지고 있다.

Web GL을 발표했다.

하드웨어 가속을 할수 있는 라이브러리.. (브라우저 내에서)

브라우저에 빌트인 되어 있기 때문에 플러그인이 필요 없다.

자바 스크립트를 사용하는 플러그인

유니티에 내장된 opengl api를 거의 수정하지 않음.

open web standard

파피어 폭스, 크롬, 인터넷익스플러러, 오페라 에서 가지고 있다.

사파리 같은 경우는 기본값이  disable 되어있어 제외.

유니티 솔루션을 구현하는 가장 좋은 솔루션이다. 

언어적 플러그인적 장벽이 없다..

항상 이 기능을 가지고 싶어 했다.

2년 전부터 구현하려고 함 HackWeek에서 시도를 시작

HackWeek란 2년에 한번씩 코펜하겐에 모여 새로운 아이디어 프로젝트 실험.

일주일 동안 테스트를 함.

데드 트리거 2 를 webGL로 구현.. 

와우... 잘 돌아감..


기술적으로 어떻게 되느냐?


유니티에서 웹 지엘을 사용하기 위해서는..?

웹 지엘은 자바 스크립트 api 이다.


유니티 엔진 코드는 C/ C++ 작성되어 있음.

c#이나 유니티 스크립트를 자바스크립트로 바꿔야 함.

Emscripten 크로스 컴파일러.

크랭 컴파일러를 이용해서 C++ 코드를 LLVM bitcode로 바꿔줌.

c 코드를 webgl로 바꾸는데 도움.. 서칭이 필요.


asm.js

자바 스크립트는 다이나믹 해서 코드 최적화가 어려움.

자바 스크립트의 서브 셋.

자바 스크립트를 AOT complie를 할수 있도록 함.

자바 스크립트의 빠른 실행을 하게 해줌.

자바스크립트의 서브셋 이기 때문에 완벽한 호완이 가능.

브라우저의 지원 여부에 상관없이 실행 가능.(webGL만 된다면..)

모질라에서 개발한 기술.

파이어폭시에서도 지원 가능.



지금은 파이어폭스에서만 지원함.




유저코드는 어떻게 해야하나?

C#을 어떻게 자바스크립트로 바꿔야 하나?


IL2CPP

C# -> C++로 만들어줌.

이코드를 asm.js를 사용

종합.
c# 스크립터를 웹에서 자바 스크립트로 변환이 가능..



C# -> .net 바이트 코드로 변환됨. 
이 닷넷 바이트 코드를 IL2CPP를 통해 C++코드로 변경.-> asm.js 를 활용해 자바스크립트로 변경.

|0 <- asm.js 에서 인티져로 사용하도록 함.


-> 최적화 패스를 함.


unity webgl 유니티 5.0에서 web gl을 어떻게 지원할 것인가?

초기 버전을 unity 5.0에서 구매 가능할거임.

처음에는 제약사항들이 많은거임.

데스크탑 버전과 파이어 폭스만 지원할 예정. -> 계속 늘어감.


5.0에서 제한되는 기능

video

runtime substance generation

networking ( www class is supported, but no .NET sockets)

마이크, 웹켐

스크립팅 디버깅



퍼포먼스는?

네이티브 코드만큼 빠를수가 없음.

얼마나 퍼포먼스가 떨어지는가?

브라우저에 따라 다름.(브라우저 마다 자바 스크립트 엔진이 다름)

asm.js를 지원하기 위한 움직임이 있어 확장할 가능이 있음.

멀티 쓰레딩을 사용하면 느려짐


최소한 네이티브 보다 50% 이상의 퍼포먼스를 보여준다.

데스크탑 pc의 50% 퍼포먼스는 그나마 많은것을 할 수 있다.

gpu 완전 지원이 되기 떄문에 고차원적인 렌더링을 많이 할 수 있따.

계속해서 발전이 될것이다.

유니티 프로파일러 100% 지원가능..


웹지엘 플러그인을 지원함.

unity 5.x 에서 기능적인 제약들을 없앨수 있도록 노력할것이다.

앞으로 더 많은 브라우저들이 webgl들을 지원해줄수 있을것으로 본다.

유니티 웹 플레이어는?

아직까지 가장 강력한 가장 광범위하게 지원되고 잇는 플러그인 이다.

두 기술을 동시에 지원할 계획 

유니티 웹 플레이어는 언젠가는 지원이 되지 않을 것인가?

마소는 웹지엘 작업중
애플도 지금 현재 웹 지엘 수정중

올해는 웹지엘 2.0이 나올텐데.

멀티쓰레딩 지원에 대해서는...? 브라우저 벤더들이 지원을 하려고 하고 있다는 얘기를 들었다.

지원이 되면 네이트브와의 퍼포먼스 차이를 줄임.

세션 2

유니티짱 한국에 상륙.
유니티 짱에 대한 이야기..

케릭터가 귀여우면 텐션이 올라간다?!

2년전에 유니티짱 프로토 타입 만들었지만 문제가..

캐릭터가 성공하지 못함..

일단 그리기가 어려움..

와닫는 부분이 없다. 제작이 힘든 부분. 임팩트가 없음..

유니티짱 프로토 타입 실패를 보고.. 2가지 요소를 생각..

그리기 쉬운 캐릭터, 그리기 어려운 캐릭터 

그리기 쉬우면 팬의 엑티비티가 높아진다..



셋팅 에셋. (표정, 움직임)

shared world


setting asset makes her live 

디자인을 100% 의도하고 만들었다..


액션 게임에서도 활용가능한 에셋을 제작하고 했음.

움직임을 보였을때 즐겁게 움직임을 보였으면 좋겠다.

배색도 중요.. 배색만 보고도 유니티 짱인지 알게 만드는것?


유니티 짱에 포함된 에셋

character model
shaders
animations

4 5 voices
locomotions
facial control sample

유니티 짱 라이센스.

전년도 수익 천만에 이하의 아래

금액을 넘게 되면 상의를 해달라..


2차 조작.. 동호인 활동 허가

기술적인 데모 아카데미 데모에서 사용 가능.




수익 상한선을 넘었을때 상의 바람.
야한거 안됨...;;

정치적인 메시지 전달 안됨


케릭터 개조할경우 라이센스를 숨겨야 함.

기술적인 언급은 없었음... 



세션 3

Unity Test Tools
유니티 tomek paszek
이시간은 살짝 졸았내요;;

tomek paszek toolsmith
테스트 인프라 개발 관리.


테스트의 개괄적인 내용.

테스트를 자동화 시켜야 하는 이유?

테스트의 목적인 리그레이션을 찾기 위함임.

테스트 자동화는 퀄리티 계약을 하는것과 같다..

코드를 납품하는 회사의 퀄리티 계약 'ㅅ'.




테스트를 자동화 하기 때문에 더많은 테스트를 할수 있다.

개발의 막바지에 갈수록 비용이 많이 든다.



Unity Test Tools goals

fill out the gap in the industry
evanglize testability
버그 레포트를 제출하는 세로운 방법.


자동화 피라미드

UI
Integration
Unit

유니티 테스트 툴

유닛 테스트 러너

어세션컴포넌트

인테그레션 테스트 러너



Unit Test Runner 사용 방법

  
코드를 리컴파일 할때마다 테스트 하도록 셋팅.


세션 4

더욱 강력한 C# 스크립트 활용
정해종


유니티 허브 프리데브로 활동중.


큐어스노우대표 + 게임개발자



Big Script -> Small Script


Master 클래스..


모노 비헤이비어 상속 -> 모노 비헤이비어를 상속 받는 마스터 클래스.


All round variable
로컬 변수

all round variable - local sharing
로컬 공유



Class RabitAttack : 모노 -> RabitAttack : Master


마스터 클래스에서 공용변수를 공유

vars.setBool(), vars.getBool() api 를 제작하여 활용.


전역 공유

varAll.




오브젝트 변수들을 저장하고 싶은 경우에는?

파일 입출력 할 경우.

var.setFloat("speed", 1.of);
var.setString("name", '홍길동");
var.


아웃풋된 파일을 로드해서 적용.
var.LoadFile("경로/파일명.txt");
var.getInt("monsterCount");

데이터베이스를 따로 구축하지 않고 파일입출력을 활요해서 적용.



데이터를 데이터베이스로 보내는 기능도 있음
var.SetString("id","test");
var.SetString("password"","1234");
var.SendHttp("주소");

http 응답을 기다려야함..

변수의 값이 바뀌었는지 확인.


Master Find - catched find 만능 변수 객체
var.FInd

한번만 찾고 변수가 바뀌지 않는 이상 비용이 크게 들지 않음.

MasterName 

NGUI 클래스에 마스터 클래스 넣고 이름 설정해서 찾기하면 비용이 적게 든다.

All round Variable - modify detection
만능 변수 객체 - 변수 수정감지

OnVariableChange(string name)
{
}

만능 변수 객체 - 문자열을 이용한 변수 설정.
all round Variable - set by string

var.FromString("int a = 1; int b = 2; string = "ttttt";);
마스터 클래스에서 변수가 설정됨.




애니메이터 사용하기


다중 오디오 사용하기.


타이머 설정
코루틴 몰라도 사용 가능.

암호화 되는 playerPrefs 사용.



출처 : http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=45126&page=0&sca=&sfl=&stx=&spt=0&page=0&currentId=44#c_45143

반응형
Posted by blueasa
, |

유니티 – 그래픽 성능 최적화

원문 - http://docs.unity3d.com/Documentation/Manual/OptimizingGraphicsPerformance.html

자주 보는 문서라 한글로 보는 게 편할 것 같아 번역해서 적어놓습니다. 오역이 있을 수 있습니다. T_T

 

2012년 7월 29일 자 버전 번역본

 

그래픽 성능 최적화

대다수 게임의 성공에 있어 좋은 성능은 가장 중요한 부분입니다. 아래 내용은 여러분 게임의 그래픽 렌더링 속도를 최대화하는 몇 가지 요약 지침입니다.

 

그래픽 비용이 어디서 많이 드는가

여러분 게임의 시각적 부분은 컴퓨터의 두 장치 GPU나 CPU에서 주로 비용을 사용합니다. 무슨 최적화든지 간에 첫 번째로 볼 것은 성능 문제가 있는 곳을 찾는 것입니다. 왜 그러냐 하면 GPU와 CPU의 최적화 방법은 상당한 차이(도 있고 반대로 GPU일 때도 그렇지만, CPU를 최적화하는 동안 GPU를 좀 더 일하게 하는 일이 상당히 흔하기)가 있기 때문입니다.

 

발생 빈도가 높은 병목과 그를 확인하는 방법

 

- GPU는 보통 fillrate나 메모리 대역폭에 의해 제약을 받습니다.

- 게임을 저해상도로 돌리면 더 빨라진다고요? 그렇다면, 아마도 GPU상의 fillrate에 의해 제약받고 있을 겁니다.

- CPU는 보통 draw calls라고 부르는 렌더링을 해야 하는 물체 수에 의해 제약을 받습니다.

렌더링 통계 창에 나오는 draw calls를 확인해 보세요. 이게 몇천(PC에서)이나 몇백(모바일에서)을 넘는다면 물체 수를 최적화해야 합니다.

 

물론, 이건 보통 이렇다는 겁니다. 병목은 다른 곳에 있을 수도 있습니다. 발생 빈도가 낮은 병목은 다음과 같습니다.

 

- GPU와 CPU 둘 다 확인해도 렌더링이 문제가 아닌 경우! 예를 들어, 직접 작성한 스크립트나 물리가 실제 문제를 일으키고 있을 수 있습니다. 분석기를 사용해 문제를 찾아보세요. (하지만 난 베이직이지.)

- GPU가 처리할 정점이 너무 많은 경우. 얼마나 많은 수의 정점이 “괜찮은지”는 GPU와 정점 셰이더의 복잡도에 의해 좌우됩니다. 모바일에서는 “십만 개를 넘지 않고”, PC에서는 “몇백만 개를 넘지 않는 것”이 적당합니다.

- CPU에서 처리하는 정점이 처리하기엔 너무 많은 경우. 골격 메시(skinned meshes), 피복 시뮬레이션, 입자(particle) 등이 될 수 있습니다.

 

CPU 최적화 – draw call 수

어떤 물체를 화면에 표현하기 위해 어느 조명이 물체에 영향을 주는지 알아내기, 셰이더와 셰이더 매개변수를 설정하기, 그리기 입력을 그래픽 드라이버로 보내기, 그래픽 카드로 보낼 명령을 준비하기 같은 몇 가지 작업을 CPU가 합니다. “물체당 한 번씩”하는 앞에 나온 모든 CPU 작업은 그렇게 많이 저렴하지 않기 때문에 보이는 물체가 많다면 비용이 증가할 것입니다.

 

예를 들어서, 삼각형(보통 국내에서는 폴리곤이라고 부르는데 원문 그대로 번역합니다.) 천 개를 가지고 있다고 합시다. 삼각형 하나로 구성된 천 개의 개별적인 메시가 있을 때보다 모든 삼각형이 한 개의 메시 안에(로 구성되어) 있을 때가 비용이 더 많이 많이 저렴할 겁니다. GPU상에서 두 경우의 비용은 아주 비슷하지만, CPU에서 천 개의 물체를 표현 완료하는 것은(한 개에 비해) 비용이 상당할 것입니다.

 

CPU가 일을 더 적게 하도록 보이는 물체 수를 줄이는 것이 좋습니다.

 

- 근접해 있는 물체들을 유니티의 draw call 일괄처리를 사용하거나 직접 합칩니다.

- 개별 텍스처를 큰 텍스처 지도(texture atlas)에 넣거나 다른 방법으로 물체의 재질(materials)을 적게 사용합니다.

- 물체를 여러 번 렌더하게 하는 기능을 적게 사용합니다. (반사, 그림자, 픽셀당 조명 등등, 아래 참조.)

 

각각의 메시가 최소 몇백 개의 삼각형을 갖도록 물체들을 함께 합치고 합친 메시당 한 개의 재질만 사용합니다. 재질을 공유하지 않는 두 물체를 합치는 것은 성능 향상이 전혀 없다는 것을 이해하는 것이 중요합니다. 두 메시가 같은 텍스처를 사용하지 않는 것이 다중 재질을 사용하는 가장 흔한 이유이기 때문에 CPU를 최적화하려면, 반드시 합치려는 물체가 같은 텍스처를 사용하게 해야 합니다.

 

하지만 전방 렌더링 패스에서 픽셀 조명을 많이 사용하면 아래에 설명한 대로 물체 결합을 할 수 없는 상황이 생길 수 있습니다.

 

GPU: 모델의 지오메트리 최적화

모델의 지오메트리(기하 구조, 외형, 외견, 폴리곤)를 최적화하려면 기본적으로 두 가지 해야 할 것이 있습니다.

 

- 필요하지 않은 경우 삼각형을 더 사용하지 말 것

- UV 매핑 이음새(재봉선, uv가 분리되어 버텍스를 공유하지 못하기 때문에 처리해야 할 데이터가 늘어납니다.)와 심한 모서리(겹쳐있는 정점) 수를 가능한 한 적게 유지하도록 노력할 것

 

그래픽 하드웨어에서 처리하는 실제 정점 수는 삼차원 모델링 프로그램에서 알려주는 수와 대개 같지 않다는 것을 주목하세요. 모델링 프로그램은 보통 기하학적 정점 수, 즉 모델을 구성하는 꼭짓점 수를 표시합니다. 하지만 그래픽 카드는 렌더링을 위해 어떤 기하학적 정점을 두 개나 그 이상의 실제 정점으로 분리해야 할 때가 있습니다. 정점이 다중 법선, 다중 UV 좌표나 다중 정점 색상을 가지고 있다면 반드시 분리해야 합니다. 그 결과 유니티에서 표시되는 정점 수는 언제나 삼차원 프로그램이 알려주는 것보다 많습니다.

 

모델의 지오메트리 양은 GPU와 관련이 가장 많지만, CPU에서 모델을 처리하는 메시 스키닝과 같은 유니티의 몇몇 기능도 관련이 있습니다.

 

조명 성능

전혀 계산하지 않는 조명이 항상 가장 빠릅니다! (당연한 거 아닌가?!) 프레임마다 계산하는 대신 정적 조명을 딱 한 번 “굽는” 라이트맵을 사용해보세요. 유니티에서는 단순히 장면(scene) 안에 조명을 설치하는 것보다 라이트맵이 적용된 주변 환경(지형, 배경 등)을 생성하는 과정이 살짝 할 게 더 많지만,

 

- 이렇게 하면 더 많이 빨라집니다. (픽셀당 조명 2개의 경우 2~3배 정도)

- 전역 조명을 구울 수 있고 라이트매퍼가 결과물을 부드럽게 할 수 있으므로 시각적으로 더 많이 좋아집니다.

 

대개 곳곳에 조명을 더 추가하는 대신 셰이더와 콘텐츠로 간단하게 속임수가 가능합니다. 예를 들어 “뒷조명(rim lighting, 역광)” 효과를 얻기 위해 카메라 쪽을 곧게 비추는 조명을 추가하는 대신 전용 “뒷조명” 계산을 셰이더를 안에 직접 추가하는 방법을 고려해보세요.

 

전방 렌더링의 조명

픽셀당 동적 조명은 영향을 받는 모든 픽셀에 큰(significant) 렌더링 부담(overhead)를 추가로 주고 물체들을 다중 패스 렌더링을 하게 합니다. 모바일과 최저사양 PC의 GPU처럼 사양이 낮은 기기에서는 한 개의 물체에 하나 보다 많은 픽셀 조명이 비추는 것을 피하고, 정적 물체를 밝히기 위해 조명 계산을 모든 프레임마다 하는 대신 라이트맵을 사용해보세요. 정점당 동적 조명은 정점 변형 시 큰 비용이 추가될 수 있습니다. 어떤 물체든지 여러 조명이 비추는 상황을 피하려고 노력하세요.

 

만약 픽셀 조명을 사용하고 있다면 각각의 메시는 픽셀 조명이 메시를 비추는 만큼 여러 번 렌더링 될 것입니다. 아주 멀리 떨어진 두 메시를 합쳤다면 합쳐진 물체의 영향을 받는 크기는 증가할 것입니다. 이 합쳐진 물체를 비추는 모든 픽셀 조명은 렌더링 중 (조명 빛이 닿지 않는 멀리 떨어진 부분도) 계산에 들어가기 때문에 렌더링해야 할 렌더링 패스 수가 증가할 것입니다. 일반적으로 합쳐진 물체를 반드시 렌더해야 되는 패스 수는 (합치게 될) 각 개별적 물체의 패스 수의 합이기 때문에 물체를 합쳐서 추가되는 것은 없습니다. 이런 이유로 다른 위치에 있는 픽셀 조명의 영향을 받게 될 너무 멀리 떨어진 메시들을 합쳐서는 안 됩니다.

 

렌더링 중, 유니티는 메시를 둘러쌓고 있는 모든 조명을 찾고 이중 가장 영향을 주는 조명을 계산합니다. 얼마나 많은 조명이 픽셀 조명과 정점 조명이 될 건지 조정할 때 품질 설정을 사용합니다. 각각의 조명은 메시로부터 얼마나 멀리 떨어져 있는지에 기반을 둔 중요도와 빛이 얼마나 강할지를 계산합니다. 그뿐만 아니라 몇몇 조명은 순전히 게임 맥락(개발자의 의도)에 따라 다른 조명보다 더욱 중요하므로 모든 조명은 Important또는 Not Important를 설정할 수 있는 표현 방법(Render Mode) 설정을 가지고 있고 조명이 Not Important로 설정된 조명은 일반적으로 낮은 간접 처리를 하게(갖게) 됩니다.

 

예를 들어, 플레이어의 자동차가 전조등을 켜고 어둠 속에서 달리고 있는 자동차 게임을 생각해보세요. 전조등은 게임에서 시각적으로 가장 중요한 조명이기 때문에 표현 방법을 아마도 Important로 설정할 것입니다. 반면에 게임의 (다른 자동차의 후면등 같은) 다른 조명들은 덜 중요하고 픽셀 조명의 시각 효과 향상이 없을 것입니다. 이런 조명들이 작은 이익을 줄 수 있는 곳에서 렌더링 비용이 버려지는 것을 피하고자 렌더 모드를 안전하게 Not Important로 설정할 수 있습니다.

 

픽셀당 조명 최적화는 CPU와 GPU 양쪽 모두 자원을 절약하게 합니다. CPU는 draw call이 적게끔 하고 GPU는 처리할 정점이 적게끔 하며 이 모든 추가적인 렌더링의 레스터라이즈될 픽셀을 적게 만듭니다.

 

GPU: 텍스처 압축과 밉 맵

압축된 텍스처를 사용하면 텍스처의 크기를 줄일 수(그 결과 로딩 시간이 더 짧아지고 메모리가 차지하는 공간이 더욱 작아집니다.) 있고 렌더링 성능을 극적으로 올릴 수 있습니다. 압축된 텍스처는 압축되지 않은 32bit RGBA 텍스처가 필요로 하는 메모리 대역폭의 일부만 사용됩니다.

 

텍스처 밉 맵 사용하기

(mipmaps 또는 MIP maps, 앞에 있는 MIP는 라틴어 multum in parvo에서 온 말로 작으면서 효율적(much in little)이라는 뜻이 있다네요…그렇다고요 ;ㅁ;)

경험상 말하자면, 삼차원 장면에서 사용되는 텍스처는 밉 맵 생성하기(Generate Mip Maps)를 항상 켜두세요. 같은 식으로 텍스처 압축도 적용하면 GPU가 렌더링 중일 때 전송되는 텍스처 데이터양을 제한하는 데 도움이 됩니다. 밉 맵이 적용된 텍스처는 GPU가 작은 삼각형에 저해상도 텍스처에 사용할 수 있게 합니다.

 

위 내용의 한 가지 예외는 텍셀(텍스처 픽셀)이 2D 게임상이나 UI 요소로써 화면 픽셀에 1:1로 적용되어 렌더할 때입니다.

 

LOD와 레이더당 배제 거리

몇몇 게임에서는 CPU와 GPU가 사용되는 것을 줄이기 위해 큰 것보다 작은 물체를 더욱 공격적으로 배제(cull)하는 것이 적절할 수 있습니다. 예를 들어서 먼 거리에서 큰 건물이 아직 보일 때 작은 돌과 파편은 (화면 픽셀보다 작아져서) 보이지 않을 수 있습니다.

 

위 내용은 Level Of Detail 기능(하지만 난 베이직이지.)을 사용하거나 카메라의 레이어당 배제 거리를 직접 설정해서 적용 할 수 있습니다. 작은 물체를 개별 레이어에 넣고 Camera.layerCullDistances 스크립트 함수를 사용해서 레이어당 배제 거리를 설정할 수 있습니다.

 

실시간 그림자

실시간 그림자는 멋지긴 하지만 CPU에는 draw calls를 추가하고 GPU에는 추가 처리를 하게 하여 성능에 상당한 비용이 들게 합니다. 더 상세한 내용은 그림자 항목을 보세요.

 

GPU: 높은 성능의 셰이더 작성법

최고사양 PC의 GPU와 최저사양 모바일 GPU는 성능이 말 그대로 수백 배 차이가 날 수 있습니다. 단일 플랫폼에서도 마찬가지입니다. PC 상에서 빠른 GPU는 느린 통합형 GPU보다 수십 배 빠르고 모바일 플랫폼에서도 똑같이 GPU 간에 큰 차이를 볼 수 있습니다.

 

그러므로 모바일 플랫폼과 최저사양 PC의 GPU 성능은 여러분이 개발하고 있는 장비보다 매우 낮을 거란 것을 기억해야 합니다. 보통 셰이더는 좋은 성능을 얻기 위해 계산과 텍스처 읽기를 줄여 손수 최적화해야 합니다. 예를 들어 몇몇 내장(built-in) 유니티 셰이더는 더 빠른(지만 어떤 제약을 받거나 비슷한 효과를 사용하기 때문에 더 빠른) “모바일” 대용 셰이더를 갖고 있습니다.

 

아래 내용은 모바일과 최저사양 PC의 그래픽 카드에 가장 중요한 몇 가지 지침입니다.

 

복잡한 수학적 연산

수학의 (pow, exp, log, cos, sin, tan, 등등 같은) 초월함수는 비용이 상당하기 때문에 경험상 볼 때 저런 픽셀당 연산은 하나를 넘으면 안 됩니다. 하나를 넘었다면 대용으로 룩업 텍스처를 사용하는 것을 고려해 보세요.

 

어떻게 하든 간에 직접 normalizedotinversesqrt 연산을 작성하려는 것은 권장하지 않습니다. 내장 함수를 사용하면 드라이버가 더 나은 코드를 만들어 낼 것입니다.

 

알파를 테스트하는(버리는) 연산은 프라그먼트(픽셀) 셰이더를 느리게 만든다는 것을 기억하세요.

 

부동 소수점 연산

직접 셰이더를 작성할 경우 부동 소수점 변수의 정밀도(precision)를 반드시 적어야 합니다. 최상의 성능을 얻기 위해 가능한 낮은 정밀도의 부동 소수점 형식을 고르는 것은 중요합니다. 연산의 정밀도는 대게 데스크톱 GPU에서는 완전히 무시되지만, 대부분의 모바일 GPU 상에서의 성능에 있어서는 중요합니다.

 

셰이더가 Cg/HLSL로 작성되어 있다면 정밀도는 다음과 같이 명시되어 있습니다.

 

float : 32-bit를 전부 사용하는 부동 소수점 형식으로 정점 변형에 적합하지만, 성능에 있어 가장 느립니다.

half : 16-bit로 줄인 부동 소수점 형식으로 텍스처 UV 좌표에 적합하고 대략 float보다 두 배정도 빠릅니다.

fixed : 10-bit 부동 소수점 형식으로 색상, 조명 계산과 다른 고비용 연산에 적합하며 대략 float보다 네 배정도 빠릅니다.

 

셰이더가 GLSL ES로 작성되어 있다면 부동 소수점 정밀도는 각각 highpmediumplowp로 명시되어 있습니다.

 

셰이더 성능에 대해 더 자세한 내용은 셰이더 성능 항목을 읽어보세요.

 

게임을 더욱 빠르게 만들기 위한 요약 확인 항목

- PC 게임을 만들고 있다면 목표로 하고 있는 GPU에 맞춰 정점 수를 프레임당 2십만에서 3백만 아래로 유지하세요.

- 내장 셰이더를 사용하고 있다면 모바일이나 Unlit 범주에 있는 것을 고르세요. 이 셰이더들은 기존 복잡한 셰이더를 간략화하고 비슷한 효과를 내게 만든 형태로써 모바일이 아닌 플랫폼에서도 잘 동작합니다.

- 장면 하나당 재질 종류 수를 적게 유지하세요. 다른 물체끼리 재질을 가능한 한 많이 공유하세요.

- 움직이지 않는 물체에 Static 속성을 적용해서 Static batching 같은 내부 최적화를 할 수 있게 하세요. (하지만 난 베이직이지.)

- 필요하지 않다면 픽셀 조명을 사용하지 말고 지오메트리에 영향을 주는 픽셀 조명(될 수 있으면 방향 조명)을 하나만 있게끔 하세요.

- 필요하지 않다면 동적 조명을 사용하지 말고 대신 라이트맵을 사용하세요.

- 가능하다면 압축된 텍스처 형식을 사용하세요. 사용할 수 없다면 32bit보다 16bit를 주로 사용해보세요.

- 필요하지 않다면 안개를 사용하지 마세요.

차폐 배제(Occlusion Culling)의 이점을 알고 차폐가 많은 복잡한(물체가 많은) 정적 장면의 경우 보이는 지오메트리와 draw-calls 양을 낮추기 위해 차폐 배제를 사용하세요. 차폐 배제로 인한 이점에 맞춰 레벨을 제작하세요. (하지만 난 베이직이지.)

“가짜” 원거리 지오메트리를 표현하기 위해 스카이박스를 사용하세요.

- 여러 텍스처를 섞기 위해 다중 패스 방식 대신 픽셀 셰이더나 텍스처 합성기를 사용하세요.

- 직접 셰이더를 작성하고 있다면 가능한 항상 가장 정밀도가 낮은 부동 소수점 형식을 사용하세요.

fixed / lowp : 색상, 조명 정보와 법선용.

half / mediump : 텍스처 UV 좌표용.

float / highp : 픽셀 셰이더에서는 피할 것. 정점 셰이더에서 위치 계산용으로 사용하는 것이 좋습니다.

- 픽셀 셰이더에서 powsincos 등등과 같은 복잡한 수학 연산 사용을 최소화하세요.

- 프래그먼트(화면 픽셀)당 텍스처를 적게 사용하세요.



출처 : http://fetchinist.com/blogs/?p=712

반응형
Posted by blueasa
, |
유니티 관련 3DS Max 에서 작업시 유의사항


- 이곳에서는 3DS Max 에서 유니티 관련 작업을 할 때 유의사항들을 하나하나 정리해 보려 합니다.

익스포트(Export)모델링 데이타는 가급적 FBX 포멧을 사용하자.
: 유니티에서 3DSMAX 와 MAYA 포맷을 지원하지만 내부적으로는 표준 그래픽 교환 포멧인 FBX 로 변환해 관리한다. 가급적 FBX Exporter 툴을 사용해 FBX를 만든 후 유니티로 가져오는 것을 권장한다.

최신의 FBX 익스포터를 사용하자.
: 과거 버전에서 만든 파일을 임포트할 경우 결과가 달라질 수 있으므로 가능한 한 가장 최신의 FBX 익스포터를 사용한다.

FBX를 내보내기 전에 Resource Collector 를 사용해 텍스처를 Asset 폴더로 복사할 수 있다.


3차원 좌표계유니티는 기본적으로 Y축이 위를 향하는 왼손 좌표계를 사용한다.
: FBX 익스포터 옵션에서 Y UP 으로 설정되어 있는지 확인하도록 하자.


스케일(Scale)유니티에서 1의 단위는 1미터를 의미한다.
: Scale Factor 를 통해 모델링을 불러올 때 스케일을 조정할 수 있지만, 가급적 모델링 작업 때 이 단위를 감안하자.


노멀(Normal) 구성대부분의 유니티 셰이더는 기본적으로 뒷면은 그리지 않도록 설정되어 있다.
: 일반적으로 그래픽 소프트웨어는 양면을 다 그리는 반면 유니티 셰이더는 그렇지 않다. 이 때문에 면의 노멀 방향이 잘못되어 있을 경우 그래픽 소프트웨어에서 잘 보이는 물체가 유니티에서는 잘 안 보일 때가 있다.


텍스처(Texture)유니티에서는 이미지가 RGBA 압축된 DXT 이미지인 .dds 형식으로 변환하여 사용된다.
: 유니티에서는 이미지를 .dds 형식으로 변화하여 사용됨으로, tif, psd 같은 대용량 파일도 마음대로 사용해도 된다.

2의 제곱수 사이즈의 텍스처를 사용하자
: 2의 제곱수 이미지를 사용하면 밉매핑(mip-mapping) 이미지가 사용될 때, 아티팩팅(artifacting) 이라는 깜빡임 현상으로 인한 부작용이 거의 없어진다. 또한 컴퓨터 내부적으로 메모리가 2의 제곱수 블록 형태로 사용됨으로 메모리 최적화와 효율성에서 이득이 있다. 가능하다면 이미지는 항상 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 등의 크기로 만들어야 한다.


재질(Material)재질(Material)이름과 텍스처 파일명과 같게 하자
: Unity3D 툴 재질에 텍스처가 자동으로 들어가게 하려면 이름이 같아야 한다.

유니티는 임포트 시점에 객체에 대해 기본 디퓨즈 텍스처만을 생성한다.
: 범프(bump)나 반짝임, 높이, 기타 특수 맵은 직접 추가해야 한다.


메시(Mesh)맥스 객체는 모서리 문제를 막기 위해 에디터블 폴리 대신 에디터블 메시로 병합해야 한다.
: FBX는 회전 모서리를 지원하지 않으므로 내보내는 과정에서 모델이 변경될 수 있다.


애니메이션(Animation)복잡한 애니메이션 계층구조는 유니티에 임포트할 때까지 정사영 방향으로 유지한다.
: 유니티는 비정사영 회전 매트릭스를 지원하지 않는다.

유니티는 현재 모프 타깃 같은 정점 애니메이션을 지원하지 않는다.
: 정점 단위로 객체에 영향을 주는 애니메이션은 항상 뼈대를 사용해 처리해야 한다.

각 비헤이비어(behaviour)나 타임 세그먼트의 시작 및 끝에 있는 변형과 객체에 대해 모두 키를 지정한다.

비헤이비어의 타임 세그먼트는 여러 객체가 같은 이름의 타임 세그먼트나 클립을 사용하지 않는 한 겹치지 않게 한다.


출처 : http://www.devbb.net/viewtopic.php?f=37&t=1120

반응형
Posted by blueasa
, |

VS2013을 깔았는데 Unity3D의 External Tools에 리스트가 뜨지 않길래 찾아보니 수동 등록 방법이 있다.


How to use Visual Studio 2013

  1. In Unity Editor go to Edit->Preferences->External Tools and In External Script Editor choose Browse from the drop down box.
  2. Browse to and select C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe.
  3. The External Script Editor should automatically show your selected editor as Visual Studio 2013.
  4. That’s it! It should just work from that point on.

Visual Studio fails to load for me!

Some people may have trouble loading VS2013 even after applying the correct settings above. The solution, for the time being, is to run Visual Studio 2013 beforehand and then the Unity Editor will successfully load its own project instance.

It works now but its not quite right

The above method isn't perfect and that is because Unity3D just doesn't properly generate the correct project files. If you don't like the limitations of the above method and you're able to afford it the best option right now is still buy the UnityVS plugin for Unity3D.



출처 : http://stackoverflow.com/questions/19889848/working-with-unity3d-and-visual-studio-2013

반응형
Posted by blueasa
, |