2017-11-21 14 views
0

Box2D에서 반지 모양을 만드는 가장 좋은 방법은 무엇입니까? (반지는 빈 공간이있는 동적 원을 의미하므로 다른 동적 개체가 들어갈 수 있습니다.)Box2D 반지 모양

팁 주셔서 감사합니다.

답변

1

"최고"는 물론 의견의 문제이지만 여기에 내가 생각할 수있는 몇 가지 방법이 있습니다. 함께 갈 결심을 (코멘트 섹션과 같이) 알려주십시오. 나는 알고 싶어 할 것이다!

링 모양 만 정적 할 필요가있는 경우 고정 링

은 다음 체인 모양에서 반지를 구축하는 길을 가야하는 것입니다. 링이 다이내믹해야한다면, 당신이 말하는 것처럼 들리지만, 계속 읽어보십시오.

내부 링 마찰없이 동적 링

/손해 배상

당신은 내부 링에 대한 물체의 마찰 또는 손해 배상을 걱정하지 않으면, 당신은 바깥으로 원 모양을 사용하여 물리학을 설정할 수 있습니다 반지의 지름과 로프 조인트를 사용하여 원하는 모든 것을 구속 반지 (너무 오랫동안 조인트의 충돌 연결 설정이 false 임). 조인트의 최대 길이를 원의 반지름보다 작은 거리로 설정하면됩니다. 이것은 반지가 자연적으로 굴러 갈 수있게 해주지 만 (그 바깥 쪽이 원이기 때문에), 반지 내부의 개념적 내면에 대해 마찰이나 회복 효과를주지는 않습니다.

와 동적 링

완전 시뮬레이션 내부 링 물리학

링 내부의 객체는 마찰과 손해 배상, 내가 좋겠 다음 방법이 다른 표면과 같은 링과 상호 작용 할 수 있도록해야하는 경우 (Box2D 코드 자체를 바꾸는 것보다 짧다) 제안은 다각형 모양에서 벗어날 것입니다. 이것들은 반지를 만들기 위해 크기가 정해져 있고 단일 몸체에 부착 된 크기 인 &이어야합니다.

반지를 만드는 데 필요한 폴리곤의 수와 함께 고리를 만드는 방법과 같은 결정을 내려야합니다. 폴리곤이 작을수록 더 많을수록 원형 링을 추정 할 수 있습니다. 가능한 한 겹치는 다각형에 지그재그가 거의 없다고 가정 할 때 겹치기에서 과도한 계산을 피하려면 몸 질량을 손으로 설정해야 할 수 있습니다.

반지는 최소한 2 * b2_polygonRadius 이상의 최소 두께 ("피부"포함)가 필요합니다. 그 너머 원하는 반지의 두께와 일치하는 다각형 치수 중 하나를 크기를 당신에게 달려있다.

작업의 몸체와 관련하여 위치 크기와 각도 방향을 일치시키는 데 필요한 다각형의 점을 결정하는 함수를 작성하고 싶을 것입니다. 나는 3면의 다각형이나 4면의면에서 반지를 만드는 것을 볼 수있었습니다. 4면 다각형을 사용하면 안쪽 점의 간격을 좁히지 않으면 (직경 차이를 맞추기 위해), 4면 다각형을 연속으로 플립 할 필요가없는 경우가 아니라면 (3면을 사용하는 것보다) 더 많은 부딪치기 문제가 발생할 수 있습니다. 삼각형.당신이 Box2D의 코드를 변경에 관심/기꺼이하는 경우 Box2D의

을 수정하여

동적 링

당신은 할 수 중 하나

  1. 함께 충돌을 처리하는 질량 계산 코드와 충돌 코드를 확장 가장자리 모양 및 사슬 모양. 또는 ...
  2. 자신의 반지 모양 유형을 만듭니다.

I 체인 형상을 이용한 동적 링 형상 지원 Box2D의으로부터 물리 엔진/라이브러리 유래되었음을 감안 I이 해결 일부 경험 (PlayRho 참조); Box2D 외부에 있긴하지만. 이 경험을 바탕으로 Box2D 코드를 수정하여 문제를 해결하려면 첫 번째 옵션 (옵션 # 1)부터 시작하는 것이 최소한 시작하는 방법이라고 생각합니다. 당신은 두 번째 옵션을 수행하려고한다면 어쨌든 당신이 필요하다고 생각하는 것을주는 경험으로부터 이익을 얻습니다.

넓은 위상은 어쨌든 링의 사각형 구성 (실제로는 AABB)을 필요로합니다. 그래서 다각형의 구성에서 반지를 만드는 것은 내가 생각하는 다른 방법보다 메모리가 덜 효율적이지만 계산 효율면에서 이길 수 있습니다. YMMV. 테스트가 확실한 유일한 방법 일 것입니다.

아니면 ...

것이 가능 누군가가 이미 Box2D의에 대한 링 형상을 만들어 그것을하지만 제가 알고있는 유일한 모양 확장 캡슐 모양입니다에 대한 소스를 제공하고 있습니다.

+0

매우 유익한 답변을 보내 주셔서 감사합니다. 이것은 분명히 실험을위한 좋은 가이드 라인으로 작용할 것입니다. 내가 무엇을 찾고 있는지 더 자세히 설명하려면 - 그 안에 다른 동적 객체를 담을 수있는 동적 인 링 모양의 객체가 필요합니다. "링"컨테이너를 돌려서 내부 요소 (복권과 같은 종류)에 영향을주는 것은 좋은 시각 효과라고 생각합니다. 두 번째 접근법은 가장 간단하게 들리지만 모양을 일반화하고 나중에 LiquidFun 확장을 통해 일부 탄성을 적용하고자합니다.이 방법은 입자 그룹에도 적용 할 수 있습니까? –

+0

@ P.Lance 입자 그룹에 어떤 효과가 있을지 모르겠습니다. 죄송합니다. 나는 적어도 내 자신의 이익을 위해 그것을 조사 할 것이다. –