WebGL - Terrain texturé avec heightmap
Je suis en train de créer un terrain en 3D à l'aide de WebGL. J'ai un jpg avec la texture du terrain, et un autre jpg avec les valeurs de hauteur (de -1 à 1).
J'ai regardé divers wrapper bibliothèques (comme SpiderGL et Three.js), mais je ne peux pas trouver un sutable exemple, et si je le fais (comme dans Three.js le code n'est pas documentée et je ne peux pas comprendre comment le faire.
Quelqu'un peut me donner un bon tutoriel ou un exemple?
Il est un exemple à Three.js http://mrdoob.github.com/three.js/examples/webgl_geometry_terrain.html qui est presque ce que je veux. Le problème est que la couleur de la montagne et de la hauteur des valeurs au hasard. Je veux lire ces valeurs à partir de 2 différents fichiers image.
Toute aide serait appriciated.
Grâce
source d'informationauteur goocreations
Vous devez vous connecter pour publier un commentaire.
Découvrez ce post plus sur GitHub:
https://github.com/mrdoob/three.js/issues/1003
L'exemple lié par florianf m'a aidé à être en mesure de le faire.
Démo: http://oos.moxiecode.com/js_webgl/terrain/index.html
Deux méthodes que je peux penser:
Pour un exemple de lecture de données d'image, vous pouvez consulter cette SORTE de question.
Vous pouvez être intéressé par mon blog sur le thème: http://www.pheelicks.com/2014/03/rendering-large-terrains/
Je me concentre sur la façon de créer efficacement votre terrain de géométrie tels que vous obtenez un niveau adéquat de détail dans le champ proche, ainsi que de loin.
Vous pouvez voir une démo de la suite ici: http://felixpalmer.github.io/lod-terrain/ et tout le code est sur github: https://github.com/felixpalmer/lod-terrain
Pour appliquer une texture sur le terrain, vous devez faire une texture de recherche dans le fragment shader, une cartographie de la localisation dans l'espace à un poste dans la texture de vos cheveux. E. g.
Selon votre GLSL compétences, vous pouvez écrire un vertex shader GLSL, affecter la texture à l'un de vos canaux de texture, et de lire la valeur dans le vertex shader (je crois que vous avez besoin d'un système moderne de carte pour lire les textures dans un vertex shader, mais c'est peut être juste me montrant mon âge 😛 )
Dans le vertex shader, de traduire la valeur z du vertex basé sur la valeur lue à partir de la texture.
Babylon.js rend extrêmement facile à mettre en œuvre. Vous pouvez voir un exemple à:
Heightmap Aire De Jeux
Ils ont même mis en place le Cannon.js moteur physique avec elle, de sorte que vous pouvez gérer les collisions: Heightmap avec les collisions
Remarque: de cette écriture, il ne fonctionne qu'avec la cannon.js la physique plugin, et le frottement ne fonctionne pas (doit être mis à 0). Aussi, assurez-vous de définir l'emplacement d'une maille/imposteur AVANT de la physique de l'état, ou vous aurez le comportement bizarre.