2012-05-18 4 views
1

Indices로 Vertices를 정의하여 Box2D로 다각형을 만드는 방법이 있습니까?
OpenGL을 사용하고 있기 때문에 어쨌든 꼭짓점과 인덱스를 정의해야합니다. Box2D에서 메쉬를 만드는 것과 같은 방법으로 본문 (모양)을 만드는 방법이 없다는 것에 놀랐습니다. . 나는 뭔가를 놓치고 있는가, 아니면 이것은 일반적으로 다르게 수행 되는가?Box2D에서 색인을 사용합니까?

+0

왜 필요한가요? 어쩌면 내가 마지막으로봤을 때부터 뭔가 바뀌었을 지 모르지만 내가 아는 것에서는 틀릴 수도 있지만 Box2D는 볼록한 모양 만 지원합니다. 따라서 꼭지점 목록을 제공하면 볼록 선체가 생성됩니다. – Bart

+0

실제로는 볼록한 모양 만 지원하며 내 지형 모양은 볼록하지 않습니다. 그 때문에 삼각형 (더 큰 모양을 만들기 위해 여러 개의 볼록한 모양)으로 그것을 분리하고 싶었습니다. – user717572

+1

정확합니다. 그러나 분리 된 볼록한 모양의 꼭지점을 지나치기 만하면됩니다. 인덱스 방식을 사용하여 여러 개의 볼록한 모양을 직접 생성하는 방법은 없다고 생각합니다. 아마도 누군가는 나를 틀리게 증명할 것이고, 대답이 아니라 논평이 될 것입니다. :) – Bart

답변

0

AS3에서는 B2D 2.1a 버전을 사용할 수 있습니다.

package org.pf.constructor.shapes 
{ 
import Box2D.Collision.Shapes.b2PolygonShape; 
import Box2D.Common.Math.b2Vec2; 

/** 
* ... 
* @author zeksa' 
*/ 
public class PFb2dConvexShape extends b2PolygonShape 
{ 
    private var _vertices:Array = new Array(); 

    public function PFb2dConvexShape(vertices:Array) 
    { 
     for (var i:int = 0; i < vertices.length; i++) 
     { 
      _vertices.push(new b2Vec2(vertices[i][0]/30, vertices[i][1]/30)); 
     } 
     SetAsArray(_vertices, _vertices.length); 
    } 

} 

} 

나는 이렇게했습니다. C++에서도 똑같이 만들 수 있다고 생각하십시오. Box2D는 볼록한 모양 만 지원합니다. 오목한 모양을 원한다면, this article가 도움이 될 것이라고 생각합니다. AS3 만 =). C++에서이 작업을 수행하는 방법을 알기를 바랍니다. 재미있게 보내세요!

0

당신은 poly2tri 도서관에서 모습이 있어야합니다 http://code.google.com/p/poly2tri/

그것은 제한된 들로네 삼각 측량 (http://en.m.wikipedia.org/wiki/Constrained_Delaunay_triangulation)을 수행하는 매우 빠르고 효율적인 LIB입니다. 입력 정점 (결국 Steiner 점)에서 삼각형의지도를 출력하지만 세련된 Delaunay를 가지거나 lib의 C 버전을 사용하려면 직접 계산해야합니다. 그러면 다음과 같이 정착 물을 만들 수 있습니다. 그들. 내가 여기에 무슨 짓을했는지

: http://vimeo.com/m/33500649

하면 LIB가 자기 교차 다각형, 중복 포인트 또는 동일 선상에 포인트를 채택하지 않도록주의하십시오. 삼각 측량을 계산하기 전에이를 확인해야합니다.

glib 라이브러리에 익숙하다면 C 버전을 구현해야한다고 생각하지만 직접 시도하지 않았으므로 알 수 없습니다. C++보다 훨씬 빠르다고 생각합니다. 그리고 정제를 구현합니다. 메쉬에 유용 할 수 있습니다.

관련 문제