Apprendre à faire des imposteurs manuellement dans Unity - comment rendre un objet à une texture et non ce que la caméra voit?

8

J'essaie d'apprendre la manière la plus performante de fabriquer un imposteur dans Unity manuellement - sans utiliser de solutions préfabriquées.

Ma première supposition est que cela devrait être réalisé en utilisant RenderTexture et une deuxième caméra, puis en prenant différents "instantanés" d'angles différents de l'objet. S'il existe de meilleures alternatives en termes de performances (même si elles sont plus difficiles à mettre en œuvre), j'aimerais en savoir plus.

Dans le cas où c'est le seul chemin, j'ai appris à effectuer le rendu d'une caméra vers une texture via un script, mais je ne pouvais toujours pas comprendre comment faire ce qui suit, ce que je dois faire en premier: comment rendre -à texturer un objet spécifique sans l'arrière-plan de la caméra (c'est-à-dire avec le reste de la texture transparent) de manière performante?

Des pointeurs, des suggestions ou au moins une recommandation de lien seront excellents.

Merci d'avance.

AndraSol
la source
Veuillez limiter votre message à une seule question. Vous pouvez créer 2 messages de questions différents pour vos deux questions.
Vaillancourt
@AlexandreVaillancourt Aucun problème! Je l'ai fait. Faites-moi savoir si elle doit encore être améliorée
AndraSol
Vous ne pouvez pas non plus demander de «liens» car les réponses qui ne fournissent que des liens ne sont pas considérées comme une bonne réponse pour ce site, sinon, votre question est correcte :)
Vaillancourt
@AlexandreVaillancourt Merci! Mais je suppose que de bonnes recommandations de liens pourraient venir via un commentaire, ai-je raison?
AndraSol
Quelque chose comme ça, oui. Une réponse peut être bien écrite et avoir des liens vers plus de détails. Une réponse ne contenant que des liens sera supprimée. Les commentaires ne sont pas soumis à ces règles.
Vaillancourt

Réponses:

3

Il existe une variété de différentes techniques d'imposteur.

Le niveau de détail est probablement le plus facile à atteindre, mais présente deux inconvénients principaux. L'effet «pop» perceptible lorsque vous passez d'un modèle à une autre à une résolution élevée, résolu par des transitions progressives entre les niveaux de détail. Le deuxième problème est que c'est beaucoup plus de travail pour l'artiste de générer des niveaux de détail pour chaque modèle. Il y a une discussion GDC qui parle d'une manière automatisée de générer des LODS - "Génération automatisée du niveau de détail pour HALO: REACH"

Une technique plus simple serait le panneau d'affichage, où vous n'utilisez qu'un polygone plat, au lieu d'un maillage basse résolution. Ce polygone fait face à la caméra et est texturé à partir d'un rendu de votre modèle. Cette méthode nécessite d'avoir plusieurs vues différentes de votre objet, un peu comme la façon dont les ennemis sont condamnés. Vous pouvez pré-rendre toutes vos vues à un atlas de texture. Les jeux modernes utilisent cette approche, comme Far Cry 3 https://www.youtube.com/watch?v=9P3EI17kHaI

Vous pouvez également avoir plusieurs panneaux d'affichage statiques différents et les combiner comme dans ce package d'unité https://forum.unity3d.com/threads/abi-automatic-3d-billboard-imposters-released.204579/

Mais la meilleure façon (que je pense que vous voulez) est de rendre dynamiquement vos panneaux d'affichage, comme dans cet article sur le gamasutra. http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php Cela a été fait pour la première fois par Jurrassic Park: Trespasser en 1998, donc ce n'est pas une nouvelle technique. Consultez la revue de code ici http://fabiensanglard.net/trespasser/index.php Faites défiler jusqu'à la section sur les ondelettes pour voir leurs imposteurs.

À l'exception de l'approche LOD standard, votre première étape serait probablement de trouver un didacticiel sur la texture de rendu. L'orientation de la caméra renderTexture doit être la même que celle de votre caméra principale, mais recadrée autour du gameObject pour plus d'efficacité. Vous devrez isoler le ou les objets de jeu que vous souhaitez rendre avec un masque d'abattage. Et définissez les drapeaux clairs de l'appareil photo pour obtenir un arrière-plan transparent. Rendez ensuite un panneau d'affichage imposteur à la place de l'objet d'origine.

Reuben Crimp
la source