절차 적 생성은 어떻게 시작합니까?
최근에 절차 적 생성 이 Spore, MMO 등에 의해 주목을 받아 왔으며, 흥미롭고 강력한 프로그래밍 기법처럼 보입니다.
내 질문은 다음과 같습니다.
- 절차 생성 기술을 활용하는 중간 규모의 프로젝트를 알고 있습니까?
- 절차 생성에 가장 적합한 언어 / 클래스 언어는 무엇입니까?
- "심각한"코드에 절차 생성을 사용할 수 있습니까? (즉, 게임이 아님)
중간 점 변위 알고리즘 과 같은 작은 이론과 간단한 예제로 시작해야 합니다 . 그래픽 생성에 관심이 있다면 Perlin Noise 에 대해서도 약간 배워야 합니다. 나는 이것을 절차 적 생성에 관한 마지막 해 프로젝트를 시작하기 위해 사용했습니다.
프랙탈 은 절차 생성과 밀접한 관련이 있습니다.
Terragen 과 SpeedTree 는 절차 적 생성의 놀라운 가능성을 보여줄 것입니다.
절차 생성은 모든 언어에서 사용할 수있는 기술입니다 (Java와 같은 OO 언어 및 Prolog와 같은 논리 언어에서 사용될 수 있으므로 C와 같은 절차 언어로 제한되지는 않음). 모든 언어에서 재귀를 잘 이해하면 절차 생성에 대한 이해가 강화됩니다.
'심각한'또는 게임이 아닌 코드의 경우 절차 생성 기술을 사용하여 다음을 수행했습니다.
- 교통 관리 계획을 세우기 위해 도시의 성장 시뮬레이션
- 혈관의 성장을 시뮬레이션
- SpeedTree는 영화 및 건축 프리젠 테이션에 사용됩니다
절차 적 컨텐츠 생성 위키 :
원하는 것이 없으면 추가하십시오.)
절차 적 콘텐츠 생성이 이제 GPU 용으로 작성되었으므로 셰이더 언어를 알아야합니다. 그것은 GLSL 또는 HLSL을 의미합니다. 이들은 각각 OpenGL 및 DirectX에 연결된 언어입니다.
속도, 쉬운 학습 곡선 및 Frank D Luna 로 인해 Dx11 / HLSL을 선호하지만 OpenGL은 더 많은 플랫폼에서 지원됩니다.
OpenGL / DirectX 게임 엔진을 설정하는 데 걸리는 시간을 (상당한) 시간을 소비하지 않고 셰이더 작성에 바로 들어가려면 WebGL도 확인해야합니다.
절차 적 내용은 소음으로 시작합니다.
따라서 Perlin 노이즈 (및 그 후속 Simplex 노이즈 ) 에 대해 알아야합니다 .
Shadertoy 는 셰이더 프로그래밍에 대한 훌륭한 참고 자료입니다. 수학적으로 짜릿한 코드가 아니기 때문에 절차 적 내용이 수행되는 방식이므로 셰이더 코딩을 직접 수행 한 후에이를 사용하는 것이 좋습니다.
Shadertoy는 Pixar에서 근무하는 데모 장면의 제품인 절차 적 천재 인 Inigo Quilez에 의해 만들어졌습니다 . 그는 라이브 코딩 세션에 대한 youtube 비디오 ( 훌륭한 예 )를 가지고 있으며이를 추천 할 수도 있습니다.
나는 이것에 대한 전문가는 아니지만 몇 가지 답변을 시도하고 기여할 수 있습니다.
NetHack과 그 형제는 공개 소스이며 절차 적 레벨 생성 (맵)에 크게 의존합니다. 링크 그것의 다운로드에. 가로 / 텍스처 / 클라우드 생성에 관심이있는 경우 해당 주제에 대한 기사가 많은 Gamasutra 및 GameDev 를 검색하는 것이 좋습니다 .
AFAIK 언어마다 큰 차이가 없다고 생각합니다. 당신이 보는 대부분의 코드는 여전히 게임 개발자의 공식 언어이기 때문에 C / CPP에있을 것이지만, 원하는 것을 사용할 수 있습니다 ...
그러한 기술로부터 이익을 얻을 수있는 프로젝트가 있는지에 따라 다릅니다. 나는 군대를 위해 시뮬레이터에서 절차 적 세대가 사용되는 것을 보았습니다 (게임은 매우 유능하지는 않지만 게임으로 간주 될 수 있습니다).
그리고 작은 메모-절차 적 생성이 소량의 규칙이나 패턴 및 많은 임의성에서 많은 데이터를 생성하는 것이면 결과는 달라질 수 있습니다. :)
이 주제에 대한 훌륭한 책이 있습니다.
http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486
그것은 비 실시간 시각 효과와 애니메이션 생성에 편향되어 있지만 이론과 아이디어는이 분야 밖에서 사용할 수 있다고 생각합니다.
또한 SideFX의 Houdini라는 완전한 절차 적 워크 플로우를 구현하는 전문 소프트웨어 패키지가 있다고 언급 할 가치가 있습니다. 이를 사용하여 문제에 대한 절차 적 솔루션을 발명하고 프로토 타이핑하여 나중에 코드로 변환 할 수 있습니다.
패키지는 다소 비싸지 만 무료 평가판 라이센스가있어 매우 훌륭한 교육 및 / 또는 엔지니어링 도구로 사용할 수 있습니다.
세계 발전기 시뮬레이션 판 구조, 침식, 비 그림자 등의 예를 보려면 https://github.com/ftomassetti/lands를 살펴보십시오.
그 외에도 문명 진화 시뮬레이터가 있습니다.
https://github.com/ftomassetti/civs
흥미로운 리소스에 대한 전체 블로그는 다음과 같습니다.
dungeonleague.com/
현재는 포기되었지만 모든 게시물을 읽어야합니다.
작은 장면에서 복잡한 그래픽을 생성하기 위해 데모 장면에서 절차 적 생성이 많이 사용됩니다. Will Wright는 Spore를 만드는 동안 데모 장면에서 영감을 받았다고 말했습니다. 시작하기 가장 좋은 곳일 수 있습니다.
http://en.wikipedia.org/wiki/Demoscene
the most important thing is to analyze how roads, cities, blocks and buildings are structured. find out what all eg buildings have in common. look at photos, maps, plans and reality. if you do that you will be one step ahead of people who consider city building as a merely computer-technological matter.
next you should develop solutions on how to create that geometry in tiny, distinct steps. you have to define rules that make up a believable city. if you are into 3d modelling you have to rethink a lot of what you have learned so the computer can follow your instructions in any situation.
in order to not loose track you should set up a lot of operators that are only responsible for little parts of the whole process. that makes debugging, expanding and improving your system much easier. in the next step you should link those operators and check the results by changing parameters.
i have seen too many "city generators" that mainly consist of random-shaped boxes with some window textures on them : (
참고URL : https://stackoverflow.com/questions/155069/how-does-one-get-started-with-procedural-generation
'Programming' 카테고리의 다른 글
동일한 Windows 컴퓨터에 Python 3.x 및 2.x를 설치할 수 있습니까? (0) | 2020.06.19 |
---|---|
AngularJS vs Angular (0) | 2020.06.19 |
React의 인라인 CSS 스타일 : hover를 구현하는 방법은 무엇입니까? (0) | 2020.06.19 |
`1L`과`1`의 차이점은 무엇입니까? (0) | 2020.06.19 |
배열 필드에 MongoDB의 고유 값 또는 다른 배열이 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.06.19 |