Question

Hé les gars, je voudrais développer un éditeur de lumières / laser et simulateur, et pour cela bien sûr que je vais apprendre un peu de programmation graphique. Je pense à l'aide de C # et XNA.

Je me demandais quels aspects de la programmation graphique je recherche ou de se concentrer sur le projet donné je travaille. Je suis nouveau, je ne sais pas de programmation graphiques tant à son sujet, mais par exemple j'imagine quelque chose que je pourrais examiner serait ( peut-être? ) soit l'éclairage volumétrique.

Par exemple, ce serait un moyen pratique d'aller sur le rendu d'un « laser » de largeur / couleur variée? Je lis quelque part à tirer juste un cylindre et d'appliquer un shader à, je voudrais confirmer que c'est le chemin.

Étant donné que cela semble être un grand projet, je pensais à commencer par créer des sources de lumière et en leur donnant des propriétés afin que je puisse facilement les manipuler. J'ai (mal) lu que seule une certaine quantité de lumière peut être rendue à un moment donné, je crois que huit. Est-ce que s'applique aux lumières ambiantes? Compte tenu de cette limitation possible, et le fait que la plupart des lumières je vais utiliser sera directionnelle, tels que les feux de tête-ou des lasers, ce qui serait une autre façon de rendre ceux-ci? Est-ce que l'éclairage volumétrique serait?

Je voudrais simplement obtenir des choses claires avant de plonger dedans. Depuis que je suis nouveau à cela, je ne l'ai pas probablement faire le meilleur usage des mots, donc si quelque chose n'a pas de sens s'il vous plaît laissez-moi savoir. Merci et désolé pour mon ignorance.

Était-ce utile?

La solution

La réponse à cela dépend du niveau de sophistication que vous avez besoin dans votre simulation d'affichage. Infographie est en fin de compte une simulation du transport de la lumière; que la simulation peut être aussi sophistiqué que le calcul de la fraction de la lumière laser déviée par les particules dans l'atmosphère au point de l'oeil de l'observateur, ou aussi simple que de tracer une ligne. Essayez l'effet de cylindre et voir si cela fonctionne pour votre projet. Si vous avez besoin quelque chose de plus sophistiqué, regarder dans la programmation des shaders (en utilisant Nvidia Seizième, par exemple), et l'ombrage volumétrique que vous avez mentionné; également des effets lumineux de post-traitement peuvent être utiles. Pour OpenGL, je crois qu'il ya une limite de 8? sources de lumière dans une scène, mais vous pouvez imaginer contourner cette limite en faisant votre propre logique d'ombrage.

Autres conseils

Eh bien, si c'est juste pour les simulations montrent la lumière que j'imagine vous allez avoir besoin de beaucoup d'effets d'éclairage sur mesure - donc peu importe si vous décidez d'utiliser XNA ou DirectX droit votre meilleur pari serait de commencer par l'apprentissage des langues shaders et comment pour programmer divers effets d'éclairage à les utiliser. Une fois que vous pouvez reproduire le type d'éclairage laser que vous voulez, vous pouvez expérimenter avec les polygones que vous souhaitez utiliser pour représenter les lasers. (Je l'ai utilisé la méthode du cylindre dans une partie de mon travail à des fins personnelles, mais je ne suis pas sûr de savoir comment les bouteilles droites s'adapter à votre objectif).

Bien que son plus rapide, je pense que le mieux ne pas utiliser l'éclairage de matériel de vanille en raison de ses limites. Les pixel shaders peuvent aider avec vous la tâche. Aussi, vous pouvez choisir OpenGL en raison de la portabilité et sa clarté dans le rendu des méthodes. J'ai travaillé sur Direct3D pendant plusieurs années avant de passer à OpenGL. fonctions OpenGL et états sont plus faciles à apprendre et méthodes de rendu (comme plusieurs passes de rendu) est beaucoup clair. Si vous aimez code sur C # (que je ne recommande pas pour ces tâches), vous pouvez utiliser la bibliothèque CSGL pour accéder aux fonctions OpenGL.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top