nebula2 3dsmax toolkit - 0.9

nmaxtoolbox version 0.9

- Modified to find 'nmaxtoolbox.ini' file in the '$3dsmax/scripts/nebula2' if it fails to read the file in the '$3dsmax/scripts/plugcfg' directory. Under Vista, the 'plugcfg' directory is located under different directory.

- Now it does not use custom attribute's vertex option. If an artist specify any unknown custom attribute which does not contain vertex option, the plug-in only exports vertex position.


ps. 한참만에 업데이트해 봅니다. ^^

by kimsama | 2009/03/27 21:25 | Nebula Device | 트랙백 | 덧글(0)

Anatomy of Nebula3 - Terms


Anatomy of Nebula3 - Terms


Nebula3는 Nebula2에 비해서 훨씬 더 많은 클래스들로 구성이 되어 있다. (하지만 실제 코드의 라인수는 훨씬 적다.) 또 새로운 클래스들이 많기 때문에 다소 생소한 부분도 많다. 이들 클래스들 간의 관계를 잘 살펴서 이해하면 전체적인 구조를 쉽게 파악할 수있다. 이 글에서는 이들 클래스들 중에서 비슷한 이름으로 헷갈리기 쉽거나 파악이 모호한 것들의 관계에 대해서 설명한다.


1. Render Layer

여기에서는 Nebula3의 세가지 레이어 중에서 Render Layer에 속하는 클래스들에 대해서 설명한다.

DisplayDevice와 RenderDevice의 구분


디스플레이 디바이스는 윈도우의 창, 렌더 디바이스는 렌더링 드라이버와 관련한 것으로 win32에서는 Direct3D 디바이스를 캡슐화한 것이다. 렌더 디바이스는 자신의 백버퍼의 내요을 디스플레이 디바이스에 출력하는 처리를 한다.

Stage와 View의 구분


stage는 전체 장면을 구성하는 모든 엔티티들을 포함하는 것으로 무대의 의미로 이해할 수 있다. view는 현재 카메라로 컬링된 장면을포함한다. 즉, view는 stage에서 컬링을 통해서 현재 카메라를 통해서 보이는 엔티티들, 다시 이야기하면 렌더링해야 하는객체들을 포함한다.

Model과 Resource의 구분

Model은 Resouce 클래스를 상속하는 클래스로 Resoucre의 하위 개념이다. 즉, 리소스의 하나로 생각할 수 있는데 리소스중에서도 렌더링과 관련한 리소스가 바로 Model이다. Model은 렌더링할 객체를 위한 템플릿으로 사용된다.

namespace Models
{
class Model : public Resources::Resource
{
    ...
};
}


Model과 ModelNode의 구분


Model은 렌더링할 객체를 위한 템플릿으로 파일 등으로 리소스를 읽으면 하나 이상의 ModelNode를 가진다. 파일로부터 리소스를읽어 들였다고 바로 렌더링하는 것이 아니라 Model은 ModelInstance를 생성하고 생성한 ModelInstance를 렌더링에 사용한다.

ModelNode와 같이 -Node의 이름을 가지는 클래스들은 장면 구성을 위한 변환(Transform) 정보를 가지며, 장면 처리를 위해서 계층(Hierarchy)을 구성할 수 있다.

ModelNode과 ModelNodeIntance의 구분


Nebula에서의 Node는 장면(Scene) 트리를 구성하는 트리의 노드를 의미한다. 즉, 렌더링과 관련되는 것이다.

ModelNode - 리소스의 관점, 직접 렌더링하지 않는다. 읽어 들인 Node를 렌더링하기 위해서는 Instance를 생성해야 한다.

읽어 들인 Model을 렌더링하기 위해서는 적어도 하나 이상의 ModelInstance가 필요한데 이 ModelInstance는 Model 클래스 객체가 생성한다.


Ptr<ModelInstance> modelInstance = model->CreateInstance();


ModelNodeInstance는 렌더링 인스턴스로 매 프레임마다 갱신해야 하는 처리는 멤버 함수 Update() 함수 내에서 처리한다.

namespace Model
{
class ModelNodeInstance :  : public Core::RefCounted
{
    ...
    // 매 프레임마다 호출된다.
    virtual void Update();
    ...
};
}



(계속...)

by kimsama | 2009/03/24 16:24 | Nebula3 | 트랙백 | 덧글(0)

iPhone and Bone Character Animation

아이폰 디바이스에서의 본(bone)을 이용한 캐릭터 사용에 대한 내용입니다.

해당 이슈는 일전에 Unity 포럼에서 제일 처음 발견했습니다만 이것이 디바이스의 태생적 한계에 기인하는 문제인지 아니면 Unity라는 소프트웨어적 문제인지를 명확하게 구분하기 힘들어서 관망하던 차에 보다 자세한 언급이 있어 포스팅합니다.


Not one butmultiple bone skeletons running with physic are really heavy for thedevice, every vertices have to be recalculated every frame based onquaternion & its conversion + physic and weight on every bone... Itis definitely possible run bone animation on the device, but if youstart having multiple characters it will slow things down, its a bitlike soft body, it work but it takes too much juice as soon as youstart using them within a game scenario.

For MD2, I test a sceneof 15k with a ground as triangles mesh and 12 MD2 models running and Iget 40+ fps on the device, the hybrid approach that Im using is basedon the same interpolation mechanism that I implement in the MD2 loader,but it is using VBO so it is even faster.

Hope this answer your question,

Cheers,
원문: http://sio2interactive.forumotion.net/sio2-engine-f3/max-md2-vs-max-baked-bone-animation-per-scene-t373.htm

15000여개의 (삼각형) 폴리곤으로 이루어진 바닥과 12개의 MD2 모델을 사용해서 40 프레임 이상의 결과를 얻었다고 나와 있습니다. MD2는 Quake2의 포맷인데 제 기억이 맞다면 대강 캐릭터들이 700~800개의 폴리곤을 사용했던 것으로 생각됩니다. 이 정도면  iPhone의 대강의 스펙이 보이시죠?

Hero of Sparta의 캐릭터도 본 애니메이션으로는 보이지 않았는데 아마도 위와 같은 이유가 아닐까 생각됩니다.

그렇다면 MD2 포맷뿐만 아니라 MD3도 고려 대상이 됩니다. 캐릭터가 세 부분으로 구성된 것만 제외하면 MD2와 MD3가 프레임당 정점 위치의 변경으로 애니메이션을 구현한다는 기본 원리는 동일하니까요.

MD2, MD3의 포맷 자체는 공개도 되어 있지만 상업적으로 사용해도 전혀 문제가 없으며, 또 이 포맷의 로딩과 렌더링, 모델, 툴(익스포터, 임포터 등)은 도처에 널려 있으니 어렵지 않게 구글링하실 수가 있을 것입니다.

엔진에서는 본 애니메이션과 정점 애니메이션의 어느쪽이던 크게 문제는 없을지도 모들지만 아트 파이프라인에서는 두 방법의 차이로 인해 다소 문제가 있을 소지도 있겠군요.

by kimsama | 2009/03/22 09:54 | iPhone | 트랙백 | 덧글(0)

Unity3D Windows

Unity3D 2.5 윈도우즈 버전이 나왔습니다. 그 동안 관심은 있었는데 Mac이 없어서 그림의 떡이었던 분들은 한번 트라이해 보시길~

저도 지금 막 설치했습니다. ^^

Unity3D 2.5 다운로드 (이메일 주소를 기입하고 windows 버전을 다운 받으면 됩니다)

by kimsama | 2009/03/19 11:17 | Development | 트랙백 | 덧글(1)

ShaderX 인세

이 맘때면 ShaderX의 인세가 도착합니다. 올 해에도 어김없이 우편이 왔습니다만... $19.45 군요. ㅡㅡ;

$25 미만의 금액은 수표가 발행 되지 않기 때문에 올해 인세는 그냥 떡 사먹은 셈 쳐야 겠습니다. 쩝.

내년에도 그냥 우편물만 받을 가능성이 거의 100%일듯 한데 말입니다....

그렇게 보면 딱 두 해 정도 약발이 있다고 생각해야 겠군요. ㅎ

by kimsama | 2009/03/18 11:20 | General | 트랙백 | 덧글(1)

아키텍트

류한석 소장님의 블로그에 좋은 글이 올라 왔네요.


아키텍트의 자질을 얘기하면서는 “지혜가 없는 탁월함은 의미가 없다, 1)복잡성을 단순성으로 만드는 것이 핵심이다, 2)‘어떻게’가아니라 ‘왜’라는 질문이 중요하다, 감동이 액션을 만들고 이성이 결과를 만든다, 팀원들과 MBTI 검사를 해보자(저는 애니어그램검사를 추천했음)” 등의 얘기도 했고요. 어쨌든 기술, 철학, 커뮤니케이션 스킬 등 다양한 내용을 얘기하고 있습니다.


1)과 2)에 대해서는 오픈 소스 프로젝트 때문에  많이 공감하는 부분입니다.

Nebula Device는 1)에 대한 내용은 엔진 자체가 보여주는 것이라서 쉽게 알 수 있는 부분이지만 2)의 경우에는 겉으로 드러나지 않아 쉬이 알 수 있는 부분은 아닌 것 같습니다. 어려움을 토로하시는 분들은 아마도 2)에 대한 부분이겠지요.

이 블로그도 2)에 대한 나침반 역할이 목적인데 아직도 부족함을 많이 느낍니다.

by kimsama | 2009/03/18 11:11 | Development | 트랙백 | 덧글(0)

◀ 이전 페이지다음 페이지 ▶