REMARQUE ! Ce site utilise des cookies et autres technologies similaires.

    Si vous ne changez pas les paramètres de votre navigateur, vous êtes d'accord. En savoir plus

    J'ai compris

    Le site CGItrainer utilise la technologie basé sur les Cookies, veuillez accepter votre accords.

  • Contact
  • CGIvod
  • Connexion

Forum

×
welcome

Bienvenue sur le site de CGItrainer
[Pour une meilleure navigation nous vous conseillons de mettre à jour votre navigateur]


CGItrainer lance sa nouvelle plateforme... CGIvod
Votre avis nous interesse Merci de répondre à ce questionnaire

Lier l'état d'une light à l'état d'un interrupteur

  • David
  • Portrait de David
  • Hors Ligne
  • TeamCGI
  • TeamCGI
  • Formateur | Webmaster :: CGItrainer.com
  • Messages : 2289
  • Karma: 165
  • Remerciements reçus 1751

David a répondu au sujet : Lier l'état d'une light à l'état d'un interrupteur

Cool

si tu le peux postes ta scène si pas trop lourde je me demande bien pourquoi tu fais tout ça surtout l’intérêt de modif la light qui influence a son tour le bouton

une application 3D temps réel ?
il y a 3 ans 6 mois #58838

Connexion ou Créer un compte pour participer à la conversation.

  • Messages : 411
  • Karma: 19
  • Remerciements reçus 169

Sylkun a répondu au sujet : Lier l'état d'une light à l'état d'un interrupteur

La scène fait 6 ou 7 Mo. Elle est très loin d'être terminée mais elle en est à 100 000 poly. Mais je posterai au moins des images si vous voulez ;)

C'est notamment un projet de décoration basée sur l'éclairage de plusieurs sources, et comme je tiens à pousser le réalisme (comprenez la fidélité de reproduction) à l'extrême, je tiens à ce que les interrupteurs soit en position cohérente avec l'éclairage, sans que je sois contraint à basculer chaque inter et lumière à la main pour chaque rendu de combinaisons de lumières différentes.

J'ai commencé par ma piaule mais ma reproduction s'étendra à la villa entière, et si je peux en plus utiliser directement cette scène (avec des LOD par contre je pense) pour une visite interactive grâce à des interactions entre les éléments ou effectivement m'en servir comme scène pour une appli plus ciblée, autant implémenter ça dès le départ.
:)

Je pensais même à envisager de pouvoir bouger le curseur sur l'écran en déplaçant la souris (qui n'est pas encore modélisée), ce genre d'interactions un peu poussées. :p

EDIT: oui et pourquoi la réciprocité ? c'est parce que selon que je modifie l'un ou l'autre ils restent toujours cohérents ;)
EDIT2: c'est pour ça que je voulais affecter le canal On de la light plutôt que son intensité qui, hors variateurs, doit rester fixe, mais c'est apparemment un canal impossible à animer... Surtout que je ne suis pas sûr qu'un multiplier à 0.0 consomme moins au rendu (et en temps réel) qu'un véritable OFF ?
il y a 3 ans 6 mois #58839

Connexion ou Créer un compte pour participer à la conversation.

  • Messages : 445
  • Karma: 41
  • Remerciements reçus 274

Sen a répondu au sujet : Lier l'état d'une light à l'état d'un interrupteur

Salut ,

Tiens si tu veux lier le canal "on" de ta light à la rotation d'un objet :
StateOn = (quat 0 0 0 1) 
StateOff = (quat -0.244 0 0 0.969775) -- exemple bien sur
when parameters $MyLight changes do
(
	if $MyLight.enabled == on do $MyInter.rotation = StateOn
	if $MyLight.enabled == off do $MyInter.rotation = StateOff
)

on peut évidemment placer le changehandler sur l'interrupteur . Tout ceci fonctionne comme un callback , juste à évaluer et çà fonctionnera jusqu''à redémarrer max .
il y a 3 ans 6 mois #58840
Les utilisateur(s) suivant ont remercié: David, christian, Sylkun, pazz

Connexion ou Créer un compte pour participer à la conversation.

  • Messages : 411
  • Karma: 19
  • Remerciements reçus 169

Sylkun a répondu au sujet : Lier l'état d'une light à l'état d'un interrupteur

Salut Sen et merci.

Finalement, fort de vos orientations, j'ai réfléchi comme un grand et fini par pondre une méthode à base de Custom Parameters et de Wire Parameters qui fonctionne comme je souhaite. Exception faite qu'il reste axé sur le Multiplier et non le On. Mais au moins je peux avoir une intensité fixe si besoin (ex: off=0 / on=20). C'est un poil alambiqué mais c'est tout bête.

Je vous ai fait une scène pour tester tout ça :

La pièce jointe switch-dimmer_light-control_example_by_sylkun.max est absente ou indisponible




Alors, après avoir créé mes lights, inter et vario :
1) je commence par créer un dummy nommé CONTROLES auquel j'applique un modificateur "Attribute Holder". Il est destiné à centraliser tout ce que je veux contrôler dans la scène (lumières, portes, etc). Une sorte de télécommande, quoi.

Pour des INTER ON/OFF :
2a) Dans le Parameter Editor, je crée des Boolean CheckButton pour chaque réseau d'interrupteur (interrupteur1, ...).

3a) dans les Wire Parameters :
3a.1) je lie en Two-way le checkbutton à la contrainte de rotation X de l'interrupteur du réseau qu'il doit contrôler :

interrupteur1 <---> inter1_switch ~ X Rotation ~ Limited_Controller__On_Off
exp1: Limited_Controller__On_Off
exp2: if interrupteur1<=0 then 40 else -40
le battement doit correspondre aux limites de rotation du switch.

3a.2) puis je lie le checkbutton à chaque lumière de son réseau :

interrupteur1 <---> inter01_light001 ~ multiplier
exp1: if multiplier<=0 then 0 else 1
exp2: if interrupteur1<=0 then 0 else 20
"20" est la valeur que doit prendre le multiplier de la light001 lorsque le bouton est On. La limite d'intensité de la light est donc définie par cette valeur.

interrupteur1 <---> inter01_light002 ~ multiplier
exp1: if multiplier<=0 then 0 else 1
exp2: if interrupteur1<=0 then 0 else 10
ici je limite l'intensité de cette light002 à 10.

interrupteur1 <---> inter01_light003 ~ multiplier
exp1: if multiplier<=0 then 0 else 1
exp2: if interrupteur1<=0 then 0 else 1
là je limite l'intensité de la light003 à 1.


Pour des VARIATEURS :
2b) Dans le Parameter Editor, je crée des Percent Slider pour chaque réseau de variateur (variateur1, ...).
3b) dans les Wire Parameters :
3b.1) je lie en Two-way le slider à la contrainte de rotation Z du variateur du réseau qu'il doit contrôler :

variateur1 <---> vario01_potard ~ Z Rotation ~ Limited_Controller__Bezier_Float
exp1: -Limited_Controller__Bezier_Float/DegToRad(270)
exp2: -variateur1*DegToRad(270)
le battement doit correspondre aux limites de rotation du potard. Le symbole négatif qui précède est là pour inverser le sens de rotation.

3b.2) puis je lie le slider à chaque lumière de son réseau :

variateur1 <---> vario01_light001 ~ multiplier
exp1: max=20 if multiplier<=0 then 0 else if multiplier>=max then 1 else multiplier/max
exp2: variateur1*20
"max" (ici 20) est la valeur maximale du multiplier de la light001 lorsque le potard est à 100%. La limite d'intensité de la light est donc définie par cette valeur.

variateur1 <---> vario01_light002 ~ multiplier
exp1: max=10 if multiplier<=0 then 0 else if multiplier>=max then 1 else multiplier/max
exp2: variateur1*10
ici je limite l'intensité de cette light002 à 10.

variateur1 <---> vario01_light003 ~ multiplier
exp1: max=1 if multiplier<=0 then 0 else if multiplier>=max then 1 else multiplier/max
exp2: variateur1*1
là je limite l'intensité de la light003 à 1.


Ainsi, quel que soit l'élément modifié, tout reste toujours cohérent :)

Voici la vue schématique de ces relations (la vue bug mais elles sont bien toutes en two-way) :

La pièce jointe switch-dimmer_light_schematic.png est absente ou indisponible




Voilà, j'espère que ça sera aussi utile à la communauté.

Merci à tous pour votre aide.

EDIT: Ah, et OFF ou 0.0, même temps de rendu.
il y a 3 ans 6 mois #58858
Pièces jointes :
Les utilisateur(s) suivant ont remercié: pazz

Connexion ou Créer un compte pour participer à la conversation.

Modérateurs: sliverpetitsuisselegolas57christianOmega3RicardoMylandDavidR