블로그 이미지
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        

공지사항

태그목록

'2D Line'에 해당되는 글 1건

  1. 2011.10.30 게임브리오 2D Line관련

출처 : http://cafe.naver.com/dxgameprogramming/1752


NiLine 클래스는 2.6부터 사라져서 저도 라인 만들 때 NiMesh를 써서 만들었습니다. path에서 waypoint들 나올테니 나온 좌표들 가지고 벡터에 넣어서 그리시면 될겁니다.

 

TestMakeLine(const NiPoint3 & kStartPos, const NiPoint3 & kEndPos)

{

NiMesh * pkWaypointLine = NiNew NiMesh; 
 pkWaypointLine->SetPrimitiveType(NiPrimitiveType::PRIMITIVE_LINES);

 NiUInt8 uiAccessMask = NiDataStream::ACCESS_CPU_READ | 
  NiDataStream::ACCESS_CPU_WRITE_MUTABLE | NiDataStream::ACCESS_GPU_READ;

 NiDataStreamRef* pkPositionRef = pkWaypointLine->AddStream(
  NiCommonSemantics::POSITION(), 0, NiDataStreamElement::F_FLOAT32_3, 
  4, uiAccessMask, NiDataStream::USAGE_VERTEX);
 NIASSERT(pkPositionRef);

 NiDataStreamRef* pkIndexRef = pkWaypointLine->AddStream(
  NiCommonSemantics::INDEX(), 0, NiDataStreamElement::F_UINT16_1, 
  4, uiAccessMask, NiDataStream::USAGE_VERTEX_INDEX);
 NIASSERT(pkIndexRef);

 NiDataStream * pkPositionStream = pkPositionRef->GetDataStream();
 NiDataStream * pkIndexStream = pkIndexRef->GetDataStream();

 pkPositionStream->GetRegion(0).SetRange(0);
 pkIndexStream->GetRegion(0).SetRange(0);

 NiDataStreamElementLock kPositionsLock = NiDataStreamElementLock(
  pkWaypointLine, NiCommonSemantics::POSITION(), 0,
  NiDataStreamElement::F_FLOAT32_3);
 NIASSERT(kPositionsLock.IsLocked());

 NiDataStreamElementLock kIndicesLock = NiDataStreamElementLock(
  pkWaypointLine, NiCommonSemantics::INDEX(), 0,
  NiDataStreamElement::F_UINT16_1);
 NIASSERT(kIndicesLock.IsLocked());

 NiTStridedRandomAccessIterator<NiPoint3> kPositionsIter = 
  kPositionsLock.begin<NiPoint3>();

 NiTStridedRandomAccessIterator<NiUInt16> kIndicesIter = 
  kIndicesLock.begin<NiUInt16>();

 kPositionsIter[0] = kStartPos;
 kIndicesIter[0] = 0;

 kPositionsIter[1] = kEndPos;
 kIndicesIter[1] = 1;

 pkPositionStream->GetRegion(0).SetRange(2);
 pkIndexStream->GetRegion(0).SetRange(2);

 NiVertexColorProperty* pkVC = NiNew NiVertexColorProperty;
 pkVC->SetSourceMode(NiVertexColorProperty::SOURCE_IGNORE);
 pkVC->SetLightingMode(NiVertexColorProperty::LIGHTING_E);
 pkWaypointLine->AttachProperty(pkVC);

 NiMaterialProperty* pkMat = NiNew NiMaterialProperty;
 pkMat->SetEmittance(NiColor(0.0f, 0.0f, 1.0f));
 pkMat->SetAlpha(1.0f);
 pkWaypointLine->AttachProperty(pkMat);

 pkWaypointLine->RecomputeBounds();
 pkWaypointLine->UpdateProperties(); 
 pkWaypointLine->Update(0);

 g_vWaypointLine.push_back(pkWaypointLine);

}

 

저는 2.6에서 위와 같은 방법으로 검출된 path 연결해서 쓰고 있습니다.

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

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
캐릭터 기울기 연산  (0) 2011.02.08
Posted by blueasa
TAG

댓글을 달아 주세요