Resumé
J'avais besoin de pouvoir générer rapidement une tuile à partir d'une carte d'altitude. Une carte d'altitude est essentiellement une image en niveaux de gris. Si vous considérez chacune des valeurs de 'pixel' représentant une valeur 'z' pour un vertex dans un maillage, alors vous pouvez imaginer appliquer ces valeurs z, et ce que vous obtenez est un maillage transformé en 'paysage'.
Cette chose n'est qu'un perfectionnement supplémentaire de la technique dans OpenScad.
Bien que je mette en évidence la technique en l'appliquant à ce qui ressemble à un paysage, je l'ai également appliquée au rendu des polices. Il existe plusieurs façons de faire des polices dans OpenScad. L'une d'entre elles consiste à utiliser un 'bitmap' et à effectuer essentiellement une cartographie de hauteur, en représentant chaque pixel comme un cube.
Une autre méthode consiste à utiliser les informations de police, et à utiliser les contours pour dessiner réellement des polygones et les extruder linéairement.
Pourtant, une troisième méthode consiste à utiliser un outil pour exporter les contours de la police dans un fichier .dxf, puis à les charger à partir de là avec un extrude linéaire.
Ce que vous pouvez faire ici, c'est prendre la police, générer des images en niveaux de gris de chaque caractère, dans un format qui est essentiellement du code OpenScad. Puis appliquer ces images à un maillage, tout comme un paysage, et vous obtenez des polices extrudées !
Le truc cool de cette technique généralisée, c'est que vous pouvez l'utiliser pour n'importe quoi. La routine vous donne un contrôle absolu sur la taille et la résolution. Ainsi, par exemple, en utilisant la même image en niveaux de gris de base, vous pouvez imprimer à 48x48 millimètres, avec une résolution de 4 facettes par millimètre. Ce serait génial si vous imprimez sur une machine avec une résolution de couche de 0,25 mm. Le rés
Les images ici démontrent que la technique est appliquée à la fois au terrain et aux personnages.
Il y a deux routines, qui peuvent être trouvées dans le fichier MeshRenderer.scad :
shell_extrude_height_map() - À utiliser lorsque les informations de votre carte de hauteur sont représentées par des valeurs uniques.
shell_extrude_color_map() - À utiliser lorsque les informations de votre carte de hauteur sont toujours en niveaux de gris, mais représentées par des triplets.
Oh oui, et l'un des paramètres de cette routine : solid=true.
Cela signifie que pendant que vous créez un prototype, vous pouvez dire 'solid=false', et cela générera simplement une surface polygonale. Puis, quand vous aurez fini de jouer, vous pourrez dire 'solid=true', et vous obtiendrez un solide 2-manifeste correct que vous pourrez ensuite activer en appuyant sur 'F6' et partir faire une promenade.
Je sais, c'est beaucoup de mots, mais regardez les jolies images !! La scène de montagne en résolution 64x64 a pris 5 heures à rendre. La 48x48 a pris environ 1,5 heures.
REMARQUE : Bien que je puisse facilement générer des caractères individuels en utilisant cette technique, leur génération en masse, comme montré sur l'image, pose certains problèmes. La structure finit par ne plus être une surface de type 2-manuelle. Je prévois d'améliorer les aspects généraux de la manipulation du texte plus tard. Mais, la technique de base de mappage de hauteur restera la même.