Boutique Cinema 4D
Affichage des résultats 1 à 9 sur 9

Discussion: Contrôler intensité lumière depuis texture

  1. #1
    Pilier Avatar de Fredaubailly
    Date d'inscription
    février 2004
    C4D version
    R11.5
    OS
    OSX
    Messages
    1 883

    Contrôler intensité lumière depuis texture

    Hello les gars,

    j'ai un petit problème à vous soumettre.
    Je veux simuler la diffusion de lumière projetée par une télé.
    Dans un matériau, j'utilise une vidéo dans le canal couleur. J'aimerais que "l'intensité" de cette vidéo commande l'intensité d'une lumière.
    Grosso modo quand la moyenne des pixels de la vidéo est proche du noir, çà envoi 0% à l'intensité de ma lumière et quand la moyenne est proche du blanc, ça envoie 100% à l'intensité de ma lumière.
    Le but du jeu étant de simuler la lumière qu'enverrait la vidéo projetée.

    Des pistes ?

    Bien sûr hors de question d'utiliser l'IG.

  2. #2
    Pilier Avatar de dotcom
    Date d'inscription
    juillet 2004
    C4D version
    R18 Studio
    OS
    win10
    Messages
    1 366
    Billets dans le blog
    1
    Mograph ?

    texture vidéo (image seq) effecteur matière sur cloneur de lights : pour les couleurs
    texture image seq noir et blanc sur effecteur intensité peut être grâce à Xpresso.
    comme ça tu peux modifier l'intensité lumineuse sans toucher aux couleurs
    ++

  3. #3
    Pilier Avatar de Fredaubailly
    Date d'inscription
    février 2004
    C4D version
    R11.5
    OS
    OSX
    Messages
    1 883
    J'ai un peu honte mais je ne comprends rien à ta technique.
    Y'aurait moyen d'avoir un petit exemple ?
    Merki

  4. #4
    Pilier Avatar de dotcom
    Date d'inscription
    juillet 2004
    C4D version
    R18 Studio
    OS
    win10
    Messages
    1 366
    Billets dans le blog
    1
    Une télé c'est quoi ?
    c'est un ensemble de points lumineux côte à côte de couleur différente.
    Donc je commencerais par cloner des lights en mode grille avec selon ta def 1280/720 ou full HD lights correspondant aux pixels, mais commence en 320/240 sur une grille fulle HD sinon tu vas planter.

    Ensuite ces lights vont devoir récupérer un signal > texture
    pas d'autre choix.

    Applique une texture au cloneur essaie mode plan et tout ce qui traine.

    Si ça ne fonctionne pas essaie avec le shader effector.

    Sans GI tu es obligé de passer par des lights parce que ya que de slights pour vraiment éclairer,
    un canal luminescence sur un matériau en dehors de calcul GI ça ne donne pas des trucs réaliste.

    Je ne peux pas trop faire plus je suis en plein taff.

    Bon courage


    ++

  5. #5
    Pilier Avatar de Fredaubailly
    Date d'inscription
    février 2004
    C4D version
    R11.5
    OS
    OSX
    Messages
    1 883
    Merci je vais essayer çà.

  6. #6
    Dépendant Avatar de olivierrob
    Date d'inscription
    septembre 2011
    C4D version
    R12 Studio
    OS
    OS 10.7
    Messages
    390
    Tu peux essayer de placer ta texture directement dans une lumière, il faut activer uniquement le canal transparence de ton matériau et d'importer ta vidéo dans ce canal, comme ça ta lumière sert de projecteur et tu peux également activer les ombres.

  7. #7
    Pilier Avatar de xs_yann
    Date d'inscription
    février 2005
    C4D version
    R19 Studio
    OS
    Mac OS X 10.13
    Messages
    1 990
    Salut,

    J'arrive un peu tard mais j'ai écrit un script (noeud XPresso) qui fait ce que tu décris dans ton premier message Fredaubauilly.

    Le noeud retourne la couleur rgb moyenne d'une séquence d'image (ainsi que l'intensité qui est la moyenne RGB).

    Example vidéo avec la couleur
    Example vidéo avec l'intensité

    Le noeud prend en entrée un nom de fichier, si le nom est suffixé par un numéro de frame, le script détecte le bon fichier pour la frame courante.
    J'ai ajouté un paramètre "Step" pour éviter d'avoir à parcourir tout les pixels de l'image pour obtenir la moyenne.
    Par exemple avec un step à 10 et une image de 640x480 la moyenne est faite sur 3072 pixels au lieu de 307200 pixels.



    Code PHP:
    import re
    import os
    import c4d

    def get_frame_image
    (pathframeext):
        
    current_frame doc.GetTime().GetFrame(doc.GetFps())
        
    padded str(current_frame).zfill(len(frame))
        return 
    path padded ext

    def split_seq_filename
    (filename):
        
    match re.match(r'^(.*?)(\d{2,9})(\.\w{2,4})$'filename)
        
    pathframeext = ('''''')
        if 
    match:
            
    pathframeext match.groups()
        else:
            
    pathext os.path.splitext(filename)
        return 
    pathframeext

    def load_bitmap
    (filename):
        
    bmp c4d.bitmaps.BaseBitmap()
        
    resbmp.InitWith(filename)
        if 
    res != c4d.IMAGERESULT_OK:
            return 
    None
        
    return bmp

    def get_average_color
    (filenamestep=10):
        
    average c4d.Vector(0)
        
    bmp load_bitmap(filename)
        if 
    not bmp:
            return 
    average
        w
    bmp.GetSize()
        
    0
        
    for x in range(0wstep):
            for 
    y in range(0hstep):
                
    color bmp.GetPixel(xy)
                
    rgcolor[0], color[1], color[2]
                
    average += (c4d.Vector(rgb) / 255.0)
                
    += 1
        
    return average i

    def get_intensity
    (color):
        return (
    color.color.color.z) / 3.0

    def main
    ():
        
    step max(Step0# Input
        
    filename File # Input
        
    pathframeext split_seq_filename(filename)
        
    frame_path get_frame_image(pathframeext) if frame else filename
        color 
    get_average_color(frame_pathstep)
        
        global 
    Intensity
        
    global Color
        Intensity 
    get_intensity(color# Output
        
    Color color # Output 

    Le fichier .c4d

  8. #8
    Dépendant
    Date d'inscription
    octobre 2011
    C4D version
    R15 Studio
    OS
    Win7 64 bits
    Messages
    404
    Arf excellent !!!

  9. #9
    Pilier Avatar de Fredaubailly
    Date d'inscription
    février 2004
    C4D version
    R11.5
    OS
    OSX
    Messages
    1 883
    Merci à tous. Je m'en suis sorti avec la solution d'olivierrob.
    Yann, je vais quand même tester ta technique. Ne serait-ce que pour "amortir" le temps que tu as passé dessus. Merci beaucoup.

Discussions similaires

  1. Matrice d'objet et intensité
    Par Hieros Gamos dans le forum Nouveaux membres
    Réponses: 3
    Dernier message: 16/03/2014, 21h48
  2. Réponses: 0
    Dernier message: 15/07/2010, 18h21
  3. Texture environnement générée depuis C4D
    Par tylerdurden dans le forum Textures
    Réponses: 5
    Dernier message: 16/12/2008, 12h24
  4. Intensité et couleur
    Par sinclairzxfr dans le forum Textures
    Réponses: 7
    Dernier message: 01/02/2005, 18h12
  5. Xpresso : DU & intensité lumineuse
    Par Pilou dans le forum Général Cinema 4D
    Réponses: 8
    Dernier message: 23/04/2004, 16h34

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet