산산이 부서지는 유리를 어떻게 시뮬레이트 할 수 있습니까?


10

유리창에 돌을 던져 시뮬레이션을해야합니다. 어떻게하면 되나요?

3D Studio Max 2012에서 석재와 유리의 3D 모델을 만들고 유리를 산산조각 내고 XNA 4.0에 .x 모델로 내 보냅니다. 그런 다음 XNA에서 애니메이션을 만들어 내 물리 엔진을 작성합니다. 그렇게 할 수 있습니까? 충돌 후 XNA에서 유리를 파괴 할 수 있습니까, 아니면 3DS Max에서 유리를 파괴해야합니까? '유리를 파괴'한다는 것은 돌의 시작 속도와 무게 및 유리 (모든 사용자 정의)의 저항 (경도)에 따라 비트가 분리되기 때문에 이전에 부서진 유리 비트를 서로 분리하는 것을 의미합니다. 서로 다른 방식으로 서로.

답변:


5

보로 노이 산산조각 은 예를 들어 상당히 현실적인 산산조각을 만드는 한 가지 방법입니다. 강화 유리는 제조 과정에서 유리의 구조적 변화로 인해 작고 일반적으로 볼록한 조각으로 부서 질 수 있습니다. 또한 유리 창이 있으면 3D가 아닌 2D Voronoi 구현 만 필요합니다.


3

처음에는 전체 메쉬에서 산산조각 난 조각을 자동으로 생성하는 것이 매우 까다 롭습니다. 샤드가 공기를 통해 날아가거나 충돌하는 등의 샤드의 역학을 시뮬레이션하는 데 관심이 있다면, 부서 질 수있는 구속 조건을 사용하거나 파편을 잡아 당길 때까지 조각을 묶을 수있는 무언가를 사용하여 미리 산산조각 난 메시로 시작합니다 충분한 힘으로


안녕하세요 Nathan (다시), 2011 년 이후에이 작업을 수행 한 적이 있습니까? 더 힌트를 줄 수 있습니까? Thx
karlphillip

@karlphillip PhysX Destruction을 사용하여 데모 작업을 했지만 개인적으로는 해당 프로젝트의 물리학이 아닌 렌더링 만했습니다. PhysX 기술은 DCC 툴에서 미리 산산조각 난 조각을 생성하고 손상이 발생하면 파손되지 않은 메시로 교체합니다.
Nathan Reed

3

부서지지 않은 창과 부서진 창을 만듭니다. 충돌이 발생하면 부서지지 않은 버전을 끄고 부서진 창을 사용하십시오.

한 창에 (일관된 크기의) 하나의 돌을 던지면 깨진 창 3D 모델을 사용하여 먼 길을 얻을 수 있습니다 (창에 샤드를 모델링 한 다음 각각에 간단한 물리 시뮬레이션을 실행하십시오) 샤드가 떨어지는 / 비행을 시뮬레이션합니다). 카메라가 매우 가까이 있지 않거나 슬로우 모션이 아닌 한 주변 지오메트리 (접지 평면)만으로도 조각간에 충돌을 수행 할 필요가 없습니다. 산산조각이 수반되는 작은 유리 입자의 구름에 약간의 입자 효과를 뿌리는 것을 잊지 마십시오.

돌이 중앙에 닿았다는 가정하에 깨진 창을 만들면 실제 적중 위치를 기준으로 조각을 스케일링하여 대부분의 적중에 대해 꽤 잘 보이는 휴식을 얻을 수 있습니다.


2

Bullet Physics Library다운로드하면 산산이 부서지는 유리가 포함 된 샘플이 있으며 산산조각이 나는 게임에서는 총알과 같은 것이 필요합니다.

편집 : 글 머리 기호는 나중에 자신의 엔진을 모델링하는 훌륭한 데모입니다.


1

답변과 귀중한 도움에 정말 감사합니다. 마침내 프로젝트를 만들었습니다. 나는 당신의 모든 제안을 시도했고 결국이 시뮬레이션을 위해 내 자신의 방법을 선택했습니다.

나는 물리 엔진을 위해 bulledsharp (c #을위한 bullet physics wrapper)를 사용했지만 가장 최근의 것을 사용하여 sourceforge svn의 bulletsharp 소스와 신선한 총알 물리 소스 자체를 컴파일하는 것이 중요합니다. 사전 컴파일 된 .dll이 아니며 웹 사이트에서 다운로드 할 수 있습니다. 사전 컴파일 된 버전은 나에게 너무 오래되었고 더 발전된 귀중한 기능은 포함하지 않았습니다. 내가 배운 것은 고급 그래픽이 필요하지 않은 간단한 시뮬레이션의 경우 구형 3dsmax (예 : 가장 최근의 2012가 아닌 2011)를 사용하여 모델 등을 개발하는 것이 좋습니다. 주로 플러그인과 내보내기가 더 많기 때문입니다. 또한 사용 가능한 모든 프레임 워크 (sharpdx, xna, xna4, slimdx, c ++ 및 기타)의 자습서를 확인하는 것이 실제로 도움이됩니다.

마지막으로 저의 접근 방식은 아주 작은 큐브 조각을 사용하여 유리 벽을 만드는 것이 었습니다. 물론 시뮬레이션을 실행하려면 강력한 기계가 있어야합니다. 힘이 약한 경우 더 큰 큐브를 사용할 수 있습니다. 수면 상태로 만든 모든 큐브를 만드는 것이 중요합니다. 이제 모든 조각은 두 개의 차원으로 구성된 수레로 표현됩니다. 숫자는 두 큐브 사이의 연결 강도를 나타냅니다. 돌을 던지고 충돌이 감지되면 벽의 각 큐브 (돌 질량, 속도, 큐브 질량 및 크기와 충돌 중심으로부터의 거리 포함)에 대한 힘이 계산되고 원의 배열에서 뺍니다. 같은 패턴. 빼기 후 연결 강도가 0 이하인 큐브가 활성화됩니다. 이것은 새끼를 움직입니다.

이거 야. 당신의 도움을 주셔서 감사합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.