COMMUNAUTÉ > Jouer en ligne

Click'n Feat WebWachine

<< < (91/171) > >>

Titi:
Trop fort !  ;D

schlaf:

--- Citation de: manu74 le 10 octobre 2014 à 20:20:22 ---- en gris, les zones qui sont masquees par une combinaison d'intervening models. genre quand un intervening model en cache partiellement un autre, ca reduit d'autant les LoS de l'origine. Cependant les combinaisons etant infinies, la partie grisee peut en fait etre visible en passant par ailleurs... comme j'ai pas trouve de facon simple de determiner exactement la chose, je laisse en gris ces zones combinees, et le joueur doit determiner si ca passe quand meme ou pas.

--- Fin de citation ---

j'avais réfléchi au sujet.. pour moi la solution à implémenter :

- tu traces à la ligne de centre à centre.
- sur chaque modèle, tu traces le diamètre perpendiculaire à cette ligne.
- puis tu testes toutes les lignes existantes entre tous les couples de points sur ces 2 diamètres, en limitant le "pas" en fonction de la vitesse de calcul. genre 1/10 de pouce permet de tester en 100+ itérations pour du petit/petit, par contre ça tape 500 pour du colossal/petit et du 2500 pour du colosse/colosse, ça devrait malgré tout être rapide.

si je ne me plante pas, il ne peut exister aucune ligne de n'importe quel point d'un socle à l'autre qui ne soit pas identique à une de ces lignes tracées d'un diamètre à l'autre (géométriquement intuitif, ça devrait être moins funky à "prouver")

ensuite, l'intersection ligne / cercle, tu l'as déjà codée.

manu74:
les diametres tels quels ne suffisent pas. on peut tracer des lignes de vue tangentes aux deux socles qui n'intersectent pas les diametres. alors apres on peut etendre les droites prependiculaires a la ligne centre a centre, de sorte a couvrir plus que le simple diametre (on peut trouver exactement combien par trigo) et la ca marche (remarque amusante : les longueurs a couvrir peuvent devenir enormes dans certaines configs, et il faut alors faire varier le pas... bref autant parcourir les cercles aux-meme c'est limite plus simple).

le probleme suivant c'est l'affichage du resultat : cette methode permet de trouver facilement une ou plusieurs lignes de vues. je peux afficher la premiere que je trouve et m'arreter, mais si elle convient pas pour une raison que j'ignore (clouds, decors, regle a la con) les joueurs pourraient vouloir en voir une autre. si je les affiche toutes, ca me fait what million de lignes a afficher. ou alors a partir des lignes j'essaie de deviner une enveloppe, ce qui revient a la methode choisie ci-dessus.

un autre probleme c'est qu'on se retape tout quand on enleve/rajoute un intervening.

au final je pense qu'il y a de nombreuses facon de proceder, toutes avec leurs qualites et leurs defauts.
la methode choisie a l'avantage de fournir toutes les informations necessaires a la decision dans 99% des cas.

elle est aussi econome en affichage (2 polygons par intervening model + l'enveloppe de base)

elle permet aussi de limiter pas mal les calculs dans les cas simples, et ne recourt au lancer de rayon que dans les cas compliques, pour une zone limitee (car oui, il y a du lancer de rayon dedans, mais en gros je reduit enormement le nombre de rayon lances dans la pluspart des cas).

elle a l'inconvenient de couter plus cher qu'un lancer de rayon brut quand le nombre d'intervening models devient eleve (je lance 2 rayons par intervening + une dizaine par zone grise, je vous laisse estimer la limite a partir de laquelle ca coute plus cher que 5000 rayons lances brutalement). mais ca devrait rarement etre le cas.

la decision finale appartient aux joueurs, c'est un compromis suffisant je pense dans un premier temps.

(pour info ma methode est sensiblement la meme que pour la librairie que tu m'avais montre, sauf que le probleme est plus complique quand la source est un cercle et pas un point, et les "murs" des cercles de diametre differents de la source et pas des betes segments. en fait je gere les meme cas que la librairie, et je gere pas les cas foireux que la librairie n'a pas a gerer a cause du fait que leur source est un point. mon algo reduit a une source point et des murs segments revient au meme que le leur)

manu74:
New : model place mode

ajout d'un mode pour placer un model a partir de sa position actuelle.
ca ressemble beaucoup au mode de charge :
- quand on rentre dans le mode, la direction et la distance de place sont affiche par rapport a la position d'origine, avec le couloir couvert entre le depart et l'arrivee.
- on peut orienter la direction de place a l'oppose d'un model (origin), ou en direction d'un model (target).
- on peut saturer la distance de place max.
la principale difference avec la charge c'est que l'orientation originale du model est conservee durant la manip.

3 cas d'utilisation :

1/ place effect "completely within its current position", genre TP.
- selectionner le model a placer entrer dans le mode "P"
- saisir la distance max
- mettre le model ou on peut avec les fleches
- sortir du mode et ajuster l'orientation.

2/ Slam
- selectionner le model cible du slam, entrer dans le mode "P"
- selectionner le model qui fait le slam comme origin -> le couloir s'oriente en direction opposee
- deplacer le model slamme de la distance de slam ([Shift] + fleches haut/bas)
- ajuster la position du model en fonction des trucs chevauches par le couloir/model slamme.
- sortir du mode

3/ Throw
- selectionner le model qui subit un throw, entrer dans le mode "P"
- selectionner le model cible d'un double-hand throw, ou simplement orienter la direction du single-hand throw
- rentrer la distance max de throw
- deplace le model dans la direction du throw en visualisant les trucs rencontres.
- eventuellement, faire devier le model lance "D" (la deviation prend en compte la demi-distance depuis la position d'origine).
- sortir du mode

c'est pas super-optimise mais ca permet de faire pas mal de manips liees aux power attacks et place effects.
a terme on pourra faire des modes complets de slam/throw avec le parcours automatique des differentes etapes.
je dois pouvoir gerer les placements "within" aussi, d'ici peu...

manu74:
petite amelioration des labels : desormais on peut en mettre plusieurs par model et effacer ceux qu'on veut
donc quand vous avez plusieurs effets a marquer sur un model, rentrez chacun separement.
un bouton apparait pour chaque label a cote de la case de saisie, en cliquant dessus on efface ce label uniquement.
il y a tjrs un boutton "clear all" en plus.

peut-etre a venir : suggestion des labels precedents dans la case de saisie...

Navigation

[0] Index des messages

[#] Page suivante

[*] Page précédente

Utiliser la version classique