Author Topic: Effet flashback  (Read 880 times)

luluthefirst4

  • Poseur de brushs
  • Posts: 138
    • http://
Effet flashback
« on: January 24, 2011, 06:46:29 PM »
Bonjour,

Il y en a surement parmi-vous qui connaissent surement XIII, les sources du ZoneInfo n'apporte rien, c'est tout dans le moteur :unsure: une ZoneInfo c'est un objet qui recouvre toute une zone recouvert de portal (n'importe quelle texture qui ait au moins la propriété "portal") je vous demande donc votre aide, l'effet de pensée c'est ça:


(c'est à la plage ou XIII pense à l'hélicoptère où il est dans un bateau) j'aimerais faire pareil, dans le ZoneInfo il y a l'effet flash:



C'est les propriétés (je sais on est pas dans MoHRadiant hein ^^)

Je ne sais pas si c'est possible de faire de même pour le moteur MoH:AA (Quake III quoi), à moins de faire plusieurs textures sur un shader ou plusieurs mais je vais devoir me crever le c*l. Si je met IsActivated sur false, ça donne ceci:



Je sais que j'ai dépassé complètement les bornes du mapping de MoH:AA mais j'aimerais juste savoir si je pourrais faire de même sur MoHRadiant ^^

Merci d'avance :lalala
« Last Edit: January 31, 2011, 12:06:48 PM by luluthefirst4 »

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Effet flashback
« Reply #1 on: February 01, 2011, 04:32:07 PM »
Bien honnêtement, ca risque d'être très dur.
Y'a pas de honte ou de gène à dépasser les bornes du mapping tant qu'on veut "faire sur MoH comme sur truc", et pas le contraire, qui ne serait pas le sujet de ce forum.

A part jouer sur les shaders, en effet, je n'ai aucune solution. Ce genre d'effet, facile à poser dans un "post-traitement", n'est pas simple à mettre en oeuvre dans le cas de MoH (qui n'a aucun post traitement).

Essaie de trouver une couche de shader qui aurait le même style d'effet, pour l'apposer à tous les shaders de la zone en question (quitte à créer des models 3D et des shaders spécifiques à cette zione, type *_zone.tik et *_shader.shader).

Apparemment, il faudrait:
- Passer l'image en noir et blanc
- Forcer les contrastes
- Ajouter des halos lumineux

Pour les halos lumineux, c'est pas gagnés, mais essaie de voir les commandes "rendereffects" (se trouvant dans g_allcalsses.htm, il y a des paramètres qui peut-etre génèrent des flares, ou halos lumineux).
Pour forcer les contrastes, on pourrait envisager d'élever la couleur du pixel au carré (les noirs seront encore plus noir, les blanc resteront blancs).

Pour passer au noir et blanc, il faut normalement sommer les composantes R V B et diviser par 3, là, point de vue shader, je ne sais pas faire...

Mais dans l'idée, ca donnerait du

Code: [Select]
[...]
//couches "Zone flashback"
{
map $whiteimage
rgbgen const .34 .34 .34
blendfunc GL_DST_COLOR GL_ZERO //Divise d'abord par 3 les composantes R V B
//On le fait avant de les sommer (sinon R+V+B>255 => MoH plafonne à 256
// et si on divise apr 3 apres, on ne dépassera jamais le 255/3)
{
map $whiteimage
blendfunc GL_ZERO GL_RVBSUM //RVBSUM n'existe pas, mais essaie de voir les shaders d'origine: il y en a peut-etre une de ce style
}
{
map $whiteimage
blendfunc GL_ZERO GL_SRC_COLOR //J'ai un doute sur l'élevation au carré comme ca!
}

Ca fait beaucoup de couches, ca fait beaucoup de "si"...
L'autre solution (tu n'auras pas le choix), c'est de faire une texture et un shader (ainsi qu'un model) pour tout élément dans ta zone de flash back!

luluthefirst4

  • Poseur de brushs
  • Posts: 138
    • http://
Effet flashback
« Reply #2 on: February 01, 2011, 05:48:10 PM »
Hmm, pour le RVBSUM j'ai fouillé dans les shaders suivants:

- algiers.shader
- common.shader
- general_industrial.shader
- general_structural.shader

mais aucun d'entre-eux ne donne le moindre indice, j'ai essayé de chercher avec le mot-clef GL_R, mais ça reste non trouvé :/

et GL_SRC_COLOR, c'est pareil, introuvable :(

J'ai vraiment pas envie de me contenter de faire la solution n° 2, car j'ai tout plein de textures à reconvertir ^^ (surtout les skins des models), mais bon j'ai surement pas compris

Code: [Select]
textures/flashback/flashback
{
qer_keyword flashback
map $whiteimage
rgbgen const .34 .34 .34
blendfunc GL_DST_COLOR GL_ZERO //Divise d'abord par 3 les composantes R V B
//On le fait avant de les sommer (sinon R+V+B>255 => MoH plafonne à 256
// et si on divise apr 3 apres, on ne dépassera jamais le 255/3)
{
map $whiteimage
blendfunc GL_ZERO GL_RVBSUM //RVBSUM n'existe pas, mais essaie de voir les shaders d'origine: il y en a peut-etre une de ce style
}
{
map $whiteimage
blendfunc GL_ZERO GL_SRC_COLOR //J'ai un doute sur l'élevation au carré comme ca!
}

j'ai placé la texture dans MoHRadiant, j'ai compilé la map et testé, ça me donne la texture par défaut (en même temps, map $whiteimage donne la texture par défaut :lalala), mais pas le moindre indice de flashback, en faite je n'ai pas trop compris.

Mais merci de ta réponse quand même ^^

EDIT: j'ai bien placé une V2 (je sais je suis fou), j'ai essayé $v2 rendereffects "+lensflare" "+additivedynamiclight"
mais ça ne donne toujours rien.

EDIT2 (HS): Par contre est-ce que tu sais comment faire pour que le joueur n'ait plus d'arme et dés la fin du flashback il reprend ses armes? Si on fait un takeall, il n'aura plus d'arme du tout, et j'ai pas non plus envie de lui redonner des armes avec give et ammo :P
« Last Edit: February 01, 2011, 10:26:59 PM by luluthefirst4 »

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Effet flashback
« Reply #3 on: February 04, 2011, 07:06:37 PM »
Pourquoi lui prendre ses armes?

Tu le bloques (ca doit être freezeplayer je crois), et tu cache le hud (setcvar ui_hud 0).
Si l'arme reste encore visible, joue sur la variable d'affichage des mains (cf le menu .urc des options, tu y trouveras le nom de la CVAR). Tu mets en cache ladite CVAR, tu la définie ensuite à 0 puis, à la fin du flash, tu restaure la valeur de la CVAR (valeur que tu avais sauvée).

Je vais voir mes fiches pour les commandes de shader.
(nota: $whiteimage n'est pas la "texture par défaut", puisque par défaut, la texture est notexture, l'abominable carré noir encadré blanc; $whiteimage renvoie simplement une image entièrement blanche).

EDIT:
J'ai fouillé mes fiches, j'ai rien comme commande shader qui ressemble à ce qu'on cherche (sommer R V et B).

Pour ce qui est des commandes shader, je te donne la liste, essaie de voir si tu peux bricoler un truc avec ca (commandes des couches uniquement):

Quote
tcmod  scroll .02  0
tcmod  scale 2 1
tcmod  turb 0 .1 0 .1
tcmod  rotate 80
tcmod  parallax .002 .002
tcmod  offset 1 0
tcmod  bulge -1.5 .02 .1 .5
tcmod  rotate fromentity 0 2
tcmod  wavetrant  sin 0.725 -.3 .5 -.04
tcmod  trans .5
tcmod  rotate fromentity 0 2 0 25
tcmod  stretch sin .9 0.05 0 0.5

alphafunc
Quote
alphafunc  gt0
alphafunc  ge128

alphagen
Quote
alphagen  wave sin 0 10 0 10.2
alphagen  distfade 1024 512 // this makes the pulsating fade when you go away from it
alphagen  vertex
alphagen  const 0.05
alphagen  entity
alphagen  fromentity
alphagen  dot .1 .6
alphagen  scoord 2 -.1 .3 .6
alphagen  oneminusdot -1 1.1
alphagen  scoord 2 .2
alphagen  constant 0.8
alphagen  distfade 512 256
alphagen  lightingspecular
alphagen  oneminusvertex
alphagen  0.8
alphagen  constant .75
alphagen  oneminusdot 0.2 1.2
alphagen  scoord 2.0 .2
alphagen  tcoord 1.01 -0.01
alphagen  oneminusdot .3 .7
alphagen  global
alphagen  oneminusdot
alphagen  fromclient
alphagen  vertex   
alphagen  const .35
alphagen  oneminusdistfade 1216 512

blendfunc
Quote
blendfunc  filter
blendfunc  blend
blendfunc  add
blendfunc  gl_zero gl_one_minus_src_color
//gl_one gl_zero gl_src_color gl_dst_color gl_src_alpha gl_one_minus_src_alpha
blendfunc  alphaadd
blendfunc  blend
blendfunc  add   
blendfunc  add

deformvertexes
Quote
deformvertexes  flap t 10 sin 1 3 50 .08 0 10
deformvertexes  projectionshadow
deformvertexes  autosprite
deformvertexes  wave 1000 sin 100 80 1 .3
deformvertexes  move 0 2 2 sin 0 5 0 .05
deformvertexes  autosprite2
deformvertexes  bulge -6 6 .3   // bulge = numberoftimesrepeatedpertexture amplitude frequency
deformvertexes  lightglow
deformvertexes  flap <s|t> <div> <function> <base> <amplitude> <phase> <frequency> <optional min> <optional max>

depth*
Quote
depthfunc always
depthwrite
depthfunc equal
depthwrite depthwrite
depthtest
depthfunc equal //needed to see corona through this shader applied to script object
depthwrite                                       
depthmask
depthfunc lequal

map
Quote
map $whiteimage
map $lightmap
map $lightmap                                   
map $bumpmap textures/bumpmaps/sp_wdtrim_townhallbmp.tga

tcgen
Quote
tcgen  environmentmodel
tcgen  environment                               
tcgen  base
tcgen  environment2

rgbgen
Quote
rgbgen  lightingspherical
rgbgen  vertex
rgbgen  identity
rgbgen  wave sin 0.25 0.25 0 0.75
rgbgen  static
rgbgen  const .0625 .0954 .1616
rgbgen  lightinggrid
rgbgen  exactvertex
rgbgen  constant .15 .15 .15
rgbgen  fromentity
rgbgen  entity
rgbgen  identitylighting
rgbgen  colorwave 1 1 1 inversesawtooth -1 3 0 0.95
rgbgen  spherical
rgbgen  const (.4 .4 .4)
rgbgen    global
rgbgen    vertex
rgbgen  dot -1 1.5
rgbgen  lightingspherical
rgbgen  fromclient
rgbgen  constant 0 .2 0

Toutes ces commandes ont été citées au moins une fois dans les sahders d'origine, en les croisant, tu arriveras peut-etre à quelque chose... Mais il n'est pas non plus impossible qu'il te faille créer un "double" de chaque model et chaque texture, en N&B...

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
Effet flashback
« Reply #4 on: September 16, 2011, 10:13:19 PM »
Au fait, y repensant, tu peux aussi te construire un script/programme qui serait capable de convertir un dossier donné (models/auchoix/) en modeling N&B.
Le programme recopierait les models dans un autre dossier (/auchoix_NeB), changerait les noms de shaders (surface * shader *_NeB), et irait récupérer ces shaders dans "scripts/".
Il les sauverait alors dans scripts/auchoix_NeB.shader, en changeant les "maps" des shaders trouvés (au lieu de map textures/*/image.tga, il sauvegarderait textures/*/image_NeB.tga).

Après, ,il suffit d'ouvrir les TGA, de les passer en noir & blanc, puis de les sauver sous le bon nom.
A partir de là, réutilisant ce programme, tu peux rajouter tous les effets que tu veux sur tes textures (flous gaussiens ou directionnels, blooms,...)