quelles sont éparses voxel octrees?
J'ai lu beaucoup de choses sur l'utilisation potentielle des rares voxel octrees à l'avenir des moteurs graphiques.
Toutefois, j'ai été incapable de trouver des informations techniques sur eux.
Je comprends ce qu'un voxel est, cependant, je ne sais pas ce que éparses voxel octrees sont ou comment sont-ils plus efficaces que la polygonale techniques en cours d'utilisation dès maintenant.
Quelqu'un pourrait expliquer ou m'indiquer une explication pour cela?
Vous devez vous connecter pour publier un commentaire.
Une NVIDIA livre blanc nommé Efficace Éparses Voxel Octrees – Analyse, les Extensions, et la mise en Œuvre
il décrit très détaillée ici
Voici un extrait sur id Software sur ce sujet.
Aussi voici un article à ce sujet.
Trouver plus d'informations dans ce grande entrée de blog.
un octree a 8 voisins, parce que si vous imaginez un carré, qui a été coupé en 4 trimestres égaux comme
alors il serait un "quad"(quatre)-arbre.
mais en 3 dimensions, vous l'avez vous-même, un cube, plutôt que d'un carré, sorte de coupe à l'horizontale, à la verticale, et le long de l'axe Z, vous trouverez les 8 morceaux plutôt que 4 comme
l'espoir qui fait depuis..
ce qui fait la SVO unique, est qu'il stocke Voxel de l'information, qui est un point dans l'espace, qui a des propriétés telles que la Couleur, Normal, etc..
l'idée derrière SVO, c'est ignorer les triangles, et de la nécessité de textures, en les mettant ensemble, en un seul SVO qui contient le Voxelized Triangle de la Coque(le Modèle), et de ses textures de surface tout en un objet.
La raison pour laquelle un Octree est nécessaire ici, c'est que sinon une grille uniforme de la structure nécessiterait beaucoup trop de mémoire pour les cartes graphiques à gérer..
donc, en utilisant la SVO permet une sorte de Mip-Mappé Texture 3D..
MipMapping est essentiellement la même image, mais à la différence des échelles, dont l'un a plus de détails, et la dernière qui a le moins de détails(mais l'air assez similaire à partir d'une distance)
de cette façon, à proximité d'objets peut diffuser de la SVO avec plus de détails, tandis que d'autres objets de flux avec moins de détails.. c'est si vous êtes à l'aide de Ray-Casting.. le plus loin, le rayon de la caméra, du moins nous creuser dans notre Méga-Texture/SVO
Mais, si vous pensez à l'extérieur de la boîte comme "Euclideon" avec ses "illimité-détail", vous utilisez simplement frustum de découpage, et l'avion/aabb intersection, avec des projections UV de nos tranches de panneau d'affichage pour trouver chaque texels de la couleur sur l'écran, à l'opposé de la Largeur*Hauteur de pixels, le tir sur les rayons, grâce à la nvidia naïf "faisceau " optimisations".
PS(sorta hors sujet): pour ceux qui ne comprennent pas comment Euclideon ne leur shi, je crois que c'est la solution la plus pratique, et j'ai des raisons de le sauvegarder(qu'ils N'utilisent PAS de projection de rayons)
Le plus grand mystère qu'ils ont, n'est-ce pas le rendu, mais le stockage de leurs données.. RLE n'a tout simplement pas le couper.. parce que un peu de volume/voxel de données peut être plus aléatoire et moins "solide", où RLE est usless, également la compression de ce qui m'nécessite généralement au moins 5 octets dans rien de moins. ils disent qu'ils sortie à peu près la moitié de ce qui est mis dans l') par le biais de leur compression.. ils sont donc à l'aide de 2,5 octets, ce qui est environ le même que pour un Triangle de nos jours
en fait, l'1.15 bits de me rendre suspect ils ont juste stocker des choses de manière séquentielle, dans certains brillamment façon simple. c'est, si ils sont seulement de stocker les données de volume et pas des choses comme la couleur ou la texture de données.
penser comme ceci: 1 voxel ne doit être 1 peu: est-il ou n'est-il pas là? (être ou ne pas être, en d'autres mots :P). l'octree nœud, il s ' en est fait de 8 voxels et un peu de store pour savoir si la chose contient rien du tout. c'est un peu par voxel, plus un pour 8. 1 + 1/8 = 1,125. ajouter un autre nœud parent avec ses 7 frères et sœurs et vous obtenez 1 + 1/8 + 1/8/8 = 1,140625. étrangement proche de l'1.15 ils ont mentionné. même si je suis probablement loin, il peut donner à quelqu'un un indice.
Vous pouvez même simplement raster tous les points, vous needent raytrace ou raycast ces jours-ci, depuis des cartes vidéo peuvent projet obscène quantités de points. Vous utilisez un octree parce que sa forme d'un cube, sans cesse en divisant faire de plus en plus petits cubes. (voxels) j'ai un moteur sur la voie maintenant à l'aide d'un rastered technique et sa recherche de bonnes. Pour ceux qui disent que tu ne peux pas animer les voxels je pense qu'ils ont vraiment pas beaucoup réfléchi sur le sujet, bien sûr possible. Comme je le vois, le monde est beaucoup comme "infini 3d-coat" afin de rechercher 3d coat et le level design est très similaire à la façon dont fonctionne ce programme. Main dessiner le dos impliquent vitesse de transmission en continu n'étant pas assez rapide, le raytracing ou rastering pas assez de prise de 60 fps, et de tracer le réel voxel objets est très gourmand en ressources, au moment où je peux tracer une 1024x1024x1024 sphère en environ 12 secondes, Mais tous ces problèmes pourraient être corrigées, son un avenir passionnant. Mon maximum taille du monde à l'heure actuelle est une meg par un meg par un meg, mais en fait je pourrais faire 8 fois plus grand que cela. Bien sûr, l'autre problème qui est en fait assez grave, c'est qu'il faut environ 100 meg pour stocker un 8192x8192x8192 personnage même après la compression, de sorte qu'un environnement seront bien plus que cela. Même si, en disant: vous allez avoir des personnages 8192x8192x8192 est complètement absurde par rapport à ce que nous voyons dans les jeux d'aujourd'hui... tout un monde, utilisé pour être 8192x8192x8192 🙂
Comment vous le faites en ne sauvegardant que les bits par pointeur est les pointeurs sont construits lors de l'exécution dans la mémoire vidéo... obtenir votre esprit autour de cela, et vous pourriez avoir votre propre moteur. 🙂