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

카테고리

분류 전체보기 (2324)N
Unity3D (568)
Programming (472)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)N
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (19)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (9)
Total1,344,606
Today31
Yesterday150
Statistics Graph

달력

« » 2019.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

공지사항

태그목록

Mesh 만들기

Gamebryo/Lecture / 2011. 11. 8. 15:09

MeshData 제작

 

StencilShadow와 Eturnum 샘플을 보면 Mesh를 프로그램에서 만들어 내는 방법을 배울 수 있다.

 

( Eturnum의 Swoosh.cpp, StencilShadow의 StencilShadow.cpp )

 

아무래도 StencilShadow의 코드가 보기에 더 익숙하고 쉽게 보인다.

 

하지만, Eturnum 의 Mesh는 매 프레임 바뀌는 Mesh에 더 빠른 코드인것 같다.

 

자세한 내용은 두 개의 샘플을 열어보자.

 

Bound 설정

 

Gamebryo는 Camera culling을 기본적으로 행하고 있기때문에

 

Mesh를 만들면 반드시 WorldBound를 업데이트 시켜줘야 한다.

 

두 가지 함수를 통해서 할 수 있는데..

 

1 번 방식 ( Eturnum의 Swoosh.cpp )

----------------------------------------

NiBound kBound;
kBound.SetCenter(0.0f, 0.0f, 0.0f);
kBound.SetRadius(10000.0f);
m_pkMesh->SetModelBound(kBound);

 

2 번 방식 ( StencilShadow의 StencilShadow.cpp )

----------------------------------------

spSideWall->RecomputeBounds();

 

2 번 방식이 더 정확하고 편해보인다. 다만 계산이 조금 들어간다는게 단점이다. ( 요즘 CPU가 얼마나 빠른데... )

 

노말 설정

 

이 외에도 DirectX의 CalcNormal과 같은 Normal을 계산해주는 함수도 있다. ( StencilShadow의 StencilShadow.cpp )

 

NiMeshUtilities::CalculateNormals( spSideWall,
NiCommonSemantics::POSITION(), 0, NiCommonSemantics::NORMAL(), 0,
NiDataStream::ACCESS_CPU_READ | NiDataStream::ACCESS_GPU_READ |
NiDataStream::ACCESS_CPU_WRITE_STATIC );

[출처]
 Mesh 만들기|작성자 프라이드

'Gamebryo > Lecture' 카테고리의 다른 글

Stencil buffer 사용하기  (0) 2011.11.08
Mesh 만들기  (0) 2011.11.08
Mesh의 생성 ( Particle, 검궤적 등 )  (0) 2011.11.08
게임브리오 2D Line관련  (0) 2011.10.30
FrameRenderSystem에서.. 커스텀알파소터프로세스..  (0) 2011.09.18
무기잔상효과  (0) 2011.02.08
Posted by blueasa
TAG MESH

댓글을 달아 주세요

매 프레임마다 메쉬를 업데이트 해야하는 경우가 있을 경우...

 

void Update()

{

spMesh = NiNew NiMesh();

}

라는 식으로 코딩을 해서는 안된다.

 

NiNew 가 많이 느리고, 새롭게 만든 Mesh에 새로운 DataStream을 생성 해야하므로, 속도가 많이 느려지게 된다.

 

그것을 피하는 방법은 다음과 같다.

 

1. 최초 한번만 불리는 부분에서 Mesh를 생성

2. DataStream을 적당한 사이즈로 준비한다. 100개의 폴리곤 정도라면, Vertex = 3 * Poly, Index = 3 * Poly 정도로 만들면 충분함.

   ( 사용할 PrimitiveType 별로, 적당히 넣어주면 될 듯 )

3. 매 프레임 DataStream 을 Lock하여 데이터를 넣어주고,

4. DataStream의 SetRegion함수를 이용하여, 사용할 양을 지정해준다.

   ex >  kPositionLock.GetDataStream()->SetRegion( NiDataStream::Region(0,(NiUInt32)vecVertices.size()*iCount), 0 );

 

샘플에도 있는 코드지만, 의외로 아무 생각없이 만드는 경우가 있어서 ^_^;;

[출처]
 Mesh의 생성 ( Particle, 검궤적 등 )|작성자 프라이드

'Gamebryo > Lecture' 카테고리의 다른 글

Stencil buffer 사용하기  (0) 2011.11.08
Mesh 만들기  (0) 2011.11.08
Mesh의 생성 ( Particle, 검궤적 등 )  (0) 2011.11.08
게임브리오 2D Line관련  (0) 2011.10.30
FrameRenderSystem에서.. 커스텀알파소터프로세스..  (0) 2011.09.18
무기잔상효과  (0) 2011.02.08
Posted by blueasa

댓글을 달아 주세요

[GB2.6]

직접 만든 mesh(Trail/GroundDecal 등)가 계속 보여야 되는데도 일정 각도에서 컬링 되는 문제..

이런저런 엄한짓 끝에..

바운딩박스를 직접 만든 mesh 오브젝트에 맞게 업데이트를 계속 해줘야 된다는 결론..

조심하자..
Posted by blueasa

댓글을 달아 주세요