2017-03-05 9 views
0

임의의 모양을 3D로 생성하고 싶습니다. 나는 모양을 얼룩으로 만들고 싶습니다. 근본적으로 구형을 취하여 덜 규칙적으로 변형 시키면 왜곡 될 수 있지만 대체로 컴팩트합니다. 찰흙의 공을 잡고 꼬집거나 밀고 당기는 것을 생각하십시오. 표면의 곡률 또는 표면의 불규칙성은 매개 변수를 사용하여 제어 할 수 있어야합니다. 나는 볼륨으로 변환 될 수있는 표면도 괜찮지 만, 출력은 보셀 (내부는 1, 외부는 0)로 구성된 볼륨이되고 싶습니다.임의의 얼룩을 생성하는 방법은 무엇입니까?

저는 구형 고조파의 중첩 인 가우스 임의의 구를 살펴 봤습니다. 나는 이것들에 대한 수학을 이해할 수 없었고 어디에도 샘플 코드가 없다. 또한 돌출부가있는 모양을 생성 할 수 없습니다 (즉, 구의 중심으로부터의 광선이 한 번 이상 서페이스와 교차하는 경우).

답변

1

3D metaballs을 사용하십시오.

무작위로 3D로 점 집합을 생성하십시오. 5 이하는 작동해야하지만 당신은 이것을 바꿀 수 있습니다.

각 보셀에 대해 각 점에 대한 역 거리 (또는 보셀과 점 좌표의 다른 기능)를 계산하여 합합니다. 합이 임계 값과 같거나 더 큰 경우 BLOB에 있습니다. 그 값보다 작 으면 바깥 쪽입니다.

임계 값을 변경할 수 있으며 선택적으로 각 포인트에 다른 랜덤 가중치 (음수 일 수 있음)를 지정할 수 있습니다. 대충 말하면 각 점의 임계 거리가 겹치기를 원할 것입니다. 그렇지 않으면 별도의 구체가 있습니다. 내가 libnoise를 사용

1

은 ... http://libnoise.sourceforge.net/

그것은 펄린/단면 또는 다른 유형의 생성 deisgned 범용 소음 도서관의 데이터 "랜덤를 seudo".

"seudo"는 시드 값이 같음을 의미합니다. 우리가 존재할 때 동일한 시드 값을 제공함으로써 똑같은 데이터를 다시 계산할 수 있습니다. 이는 절차 적으로 텍스처를 생성하는 가상 세계와 같은 것입니다.

원하는 종류의 것을 생성하도록 쉽게 구성 할 수 있습니다.