Resultados 1 al 13 de 13

Tema: Cambiar una característica en distintos objetos y materiales

  1. #1
    Fecha de ingreso
    Jul 2023
    Mensajes
    30

    Cambiar una característica en distintos objetos y materiales

    En mi escena, tengo numerosos objetos con diferentes materiales asignados. Quiero modificar en todos ellos una característica, digamos "especular", y, por ejemplo, sumar 0.25 al valor que ya tienen en el especular de todos esos materiales en todos esos objetos, sin tener que ir uno por uno para modificarlos.

    ¿Cómo se puede hacer? Gracias.

  2. #2
    Fecha de ingreso
    Aug 2004
    Mensajes
    22,247

    Cómo crear y asignar un Material Shader con Python

    Supongo que se podría hacer por medio de un script de Phyton, pero no sabría decirte como...


  3. #3
    Fecha de ingreso
    Aug 2004
    Mensajes
    22,247

  4. #4
    Fecha de ingreso
    Aug 2004
    Mensajes
    22,247
    ((off topic))

    A ver si mejoran el chatGPT y con solo escribir lo que quieras te lo hace.

    Yo probé hace tiempo crear unos scripts para añadir objetos a la escena y lo hace bien, aunque al principio le cuesta y se equivoca.
    Parece ser que este es el futuro de la programación..


  5. #5
    Fecha de ingreso
    Apr 2002
    Mensajes
    25,945

    Cambiar el valor de especular en todos los objetos de una escena de Blender

    Para modificar el valor del especular de todos los materiales en todos los objetos de una escena de Blender, puedes seguir estos pasos:

    1. En modo objeto, selecciona todos los objetos que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.
    2. En el panel de propiedades, en la pestaña Materiales, haz clic en el botón Editar. Esto abrirá el editor de materiales.
    3. En el editor de materiales, selecciona todos los materiales que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.
    4. En el panel de propiedades, en la pestaña Especular, aumenta el valor del especular en 0.25.
    5. Haz clic en el botón Aceptar para cerrar el editor de materiales.


    Todos los materiales seleccionados se modificarán para aumentar el valor del especular en 0.25.

    Aquí tienes los pasos detallados:

    Paso 1: Seleccionar los objetos

    En modo objeto, selecciona todos los objetos que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.

    Paso 2: Abrir el editor de materiales

    Para abrir el editor de materiales, haz clic en el botón Editar en el panel de propiedades, en la pestaña Materiales.

    Paso 3: Seleccionar los materiales

    En el editor de materiales, selecciona todos los materiales que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.

    Paso 4: Modificar el valor del especular

    En el panel de propiedades, en la pestaña Especular, aumenta el valor del especular en 0.25.

    Paso 5: Cerrar el editor de materiales

    Para cerrar el editor de materiales, haz clic en el botón Aceptar.

    También puedes utilizar un script para modificar el valor del especular de todos los materiales en todos los objetos de una escena de Blender. El siguiente script aumentará el valor del especular en 0.25 de todos los materiales en todos los objetos de la escena actual.

    Para ejecutar este script, abre la consola de Python de Blender y pega el script. A continuación, pulsa Enter para ejecutar el script.

    Código:
    import bpy
    
    def modify_specular(amount):
      for obj in bpy.context.scene.objects:
        for mat in obj.data.materials:
          mat.specular.alpha = mat.specular.alpha + amount
    
    modify_specular(0.25)
    A ver si esto te ayuda en algo, un saludo.
    |Agradecer cuando alguien te ayuda es de ser agradecido|

  6. #6
    Fecha de ingreso
    Aug 2004
    Mensajes
    22,247
    Cita Iniciado por 3dpoder Ver mensaje
    Para modificar el valor del especular de todos los materiales en todos los objetos de una escena de Blender, puedes seguir estos pasos:

    1. En modo objeto, selecciona todos los objetos que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.
    2. En el panel de propiedades, en la pestaña Materiales, haz clic en el botón Editar. Esto abrirá el editor de materiales.
    3. En el editor de materiales, selecciona todos los materiales que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.
    4. En el panel de propiedades, en la pestaña Especular, aumenta el valor del especular en 0.25.
    5. Haz clic en el botón Aceptar para cerrar el editor de materiales.


    Todos los materiales seleccionados se modificarán para aumentar el valor del especular en 0.25.

    Aquí tienes los pasos detallados:

    Paso 1: Seleccionar los objetos

    En modo objeto, selecciona todos los objetos que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.

    Paso 2: Abrir el editor de materiales

    Para abrir el editor de materiales, haz clic en el botón Editar en el panel de propiedades, en la pestaña Materiales.

    Paso 3: Seleccionar los materiales

    En el editor de materiales, selecciona todos los materiales que quieras modificar. Puedes hacerlo haciendo clic en ellos mientras mantienes pulsada la tecla Ctrl.

    Paso 4: Modificar el valor del especular

    En el panel de propiedades, en la pestaña Especular, aumenta el valor del especular en 0.25.

    Paso 5: Cerrar el editor de materiales

    Para cerrar el editor de materiales, haz clic en el botón Aceptar.

    También puedes utilizar un script para modificar el valor del especular de todos los materiales en todos los objetos de una escena de Blender. El siguiente script aumentará el valor del especular en 0.25 de todos los materiales en todos los objetos de la escena actual.

    Para ejecutar este script, abre la consola de Python de Blender y pega el script. A continuación, pulsa Enter para ejecutar el script.

    Código:
    import bpy
    
    def modify_specular(amount):
      for obj in bpy.context.scene.objects:
        for mat in obj.data.materials:
          mat.specular.alpha = mat.specular.alpha + amount
    
    modify_specular(0.25)
    A ver si esto te ayuda en algo, un saludo.
    Eso tira un error....

    Python: Traceback (most recent call last): File "\Text", line 8, in <module>
    File "\Text", line 6, in modify_specular
    AttributeError: 'Material' object has no attribute 'specular'


  7. #7
    Fecha de ingreso
    Apr 2002
    Mensajes
    25,945
    Cita Iniciado por Soliman Ver mensaje
    Eso tira un error....
    El error que estás recibiendo indica que Blender no puede encontrar el atributo specular en la clase Material. Esto se debe a que el atributo specular solo está disponible en Blender Internal (BI), el antiguo motor de renderizado de Blender. Blender Cycles, el motor de renderizado actual, no tiene el atributo specular.

    Para solucionar este error, puedes usar el atributo diffuse en lugar del atributo specular. El atributo diffuse controla el color base del material, y también puede controlar su reflectividad. Para aumentar la reflectividad del material, puedes aumentar el valor del atributo diffuse.

    Código:
    import bpy
    
    def modify_diffuse(amount):
      for obj in bpy.context.scene.objects:
        for mat in obj.data.materials:
          mat.diffuse.alpha = mat.diffuse.alpha + amount
    
    modify_diffuse(0.25)
    Para usar este código, simplemente cópialo y pégalo en la consola de Python de Blender y presiona Enter. Todos los materiales en la escena tendrán su reflectividad aumentada en un 25%.

    También puedes usar este código para crear un script de Python que modifique la reflectividad de los materiales en tu escena. Para ello, crea un nuevo archivo de Python y pega el código anterior en él. Luego, guarda el archivo con un nombre como modify_reflectivity.py.

    Para ejecutar el script, abre la consola de Python de Blender y escribe el siguiente comando:

    Código:
    import modify_reflectivity
    
    modify_reflectivity.modify_diffuse(0.25)
    Esto modificará la reflectividad de todos los materiales en la escena en un 25%.

    Si lo pruebas ya me dirás si funciona o no, un saludo.
    |Agradecer cuando alguien te ayuda es de ser agradecido|

  8. #8
    Fecha de ingreso
    Aug 2004
    Mensajes
    22,247
    Para cambiar el SPECULAR

    import bpy# Itera a través de todos los objetos de la escena
    for obj in bpy.context.scene.objects:
    # Verifica si el objeto es una malla (Mesh)
    if obj.type == 'MESH':
    # Verifica si el objeto tiene un material
    if obj.data.materials:
    # Itera a través de los materiales del objeto
    for material in obj.data.materials:
    # Verifica si el material tiene un nodo Principled BSDF
    if material.node_tree:
    principled_bsdf = material.node_tree.nodes.get("Principled BSDF")
    if principled_bsdf:
    # Modifica el valor de Specular (specular_intensity)
    principled_bsdf.inputs["Specular"].default_value = 0.5 # Cambia 0.5 al valor que desees


    # Actualiza la vista de la escena
    bpy.context.view_layer.update()


    Archivos adjuntados Archivos adjuntados

  9. #9
    Fecha de ingreso
    Jul 2023
    Mensajes
    30

    Wink Es mejor con custom Properties

    No me resultó útil toda esta complicación, cuyo inflexible resultado impone un solo valor a la característica, lo cual no era lo que esperaba. La idea era tener acceso rápido desde un solo lugar a características de objetos y materiales con distintos valores de base.

    Por ejemplo para animarlos.

    Resulta que eso lo puedo hacer con custom Properties, que según lo que vi en este video, me resulta mucho más práctico, entendible y no tengo que andar haciendo trabajosas depuraciones.

    https://www.youtube.com/watch?v=yYCDGgsQnb0


    Lo resolveré así hasta que todos nosotros y no sólo la IA, subamos unos peldaños en el entendimiento de programación.

  10. #10
    Fecha de ingreso
    Aug 2004
    Mensajes
    22,247
    Cita Iniciado por gonzapert Ver mensaje
    No me resultó útil toda esta complicación, cuyo inflexible resultado impone un solo valor a la característica, lo cual no era lo que esperaba
    la idea era tener acceso rápido desde un solo lugar a características de objetos y materiales con distintos valores de base
    Por ejemplo para animarlos
    Resulta que eso lo puedo hacer con custom Properties, que según lo que vi en este video, me resulta mucho más práctico, entendible y no tengo que andar haciendo trabajosas depuraciones
    https://www.youtube.com/watch?v=yYCDGgsQnb0

    Lo resolveré así hasta que todos nosotros y no sólo la ia, subamos unos peldaños en el entendimiento de programación

  11. #11
    Fecha de ingreso
    Jul 2023
    Mensajes
    30

    Honestamente

    Solimán, si realmente tu intención es ayudar, te pido que escribas tu aporte en formato de texto e imágenes

  12. #12
    Fecha de ingreso
    Aug 2004
    Mensajes
    22,247
    Cita Iniciado por gonzapert Ver mensaje
    Solimán, si realmente tu intención es ayudar, te pido que escribas tu aporte en formato de texto e imágenes
    Pues va a ser que no.... eso no se puede poner con texto e imágenes. Lo siento.

  13. #13
    Fecha de ingreso
    Jul 2023
    Mensajes
    30

    Angry Clickbait NO

    no voy a ver un video tuyo donde decís que no sabés el tema

Temas similares

  1. Cinema 4D Unir varios objetos muy distintos
    Por DPROZ en el foro Modelado
    Respuestas: 0
    : 03-05-2021, 20:09
  2. Respuestas: 1
    : 10-03-2021, 14:22
  3. Blender UVS de distintos objetos en la misma imagen
    Por Bebilina en el foro Materiales y Texturizado
    Respuestas: 5
    : 01-02-2021, 06:13
  4. ZBrush Distintos objetos en ZBrush
    Por NICUSPOCUS en el foro Programas de Diseño 3D y CAD
    Respuestas: 2
    : 22-03-2011, 13:05
  5. Distintos renders sin cambiar nada en la escena
    Por carlosall en el foro Render, Iluminación y Cámaras
    Respuestas: 5
    : 29-06-2005, 01:56

Etiquetas para este tema