tutoriales.com

Modelado de Engranajes y Mecanismos Precisos en 3ds Max con Scripting MAXScript ⚙️

Este tutorial te guiará paso a paso en el modelado de engranajes y mecanismos complejos en 3ds Max. Exploraremos técnicas de modelado poligonal y el uso avanzado de MAXScript para generar componentes con precisión. Descubre cómo dar vida a tus diseños industriales con facilidad.

Intermedio25 min de lectura9 views
Reportar error
Modelado de Engranajes y Mecanismos Precisos en 3ds Max con Scripting MAXScript ⚙️

Introducción al Modelado de Engranajes y Mecanismos en 3ds Max ✨

El modelado de engranajes y otros mecanismos de precisión es una habilidad esencial para cualquier diseñador 3D que trabaje en campos como el diseño industrial, la ingeniería, la robótica o la animación de máquinas. Aunque 3ds Max ofrece potentes herramientas de modelado poligonal, la creación manual de engranajes con dientes perfectos y geometrías exactas puede ser un proceso tedioso y propenso a errores.

En este tutorial, combinaremos lo mejor de ambos mundos: el control visual del modelado poligonal para los componentes principales y el poder de MAXScript para generar engranajes con la máxima precisión matemática. ¡Prepárate para llevar tus habilidades de modelado al siguiente nivel!

🔥 Importante: Este tutorial asume un conocimiento básico de 3ds Max y una comprensión elemental de la interfaz y las herramientas de modelado. No es necesario tener experiencia previa con MAXScript, pero sí una mentalidad abierta a aprender un poco de código para potenciar tu flujo de trabajo.

¿Por qué Modelar Engranajes Precisos? 🎯

Los engranajes son componentes fundamentales en una gran variedad de máquinas. Su precisión es clave para el correcto funcionamiento de un mecanismo. En 3D, un engranaje bien modelado no solo se ve mejor, sino que también es crucial para:

  • Animaciones realistas: Los engranajes que interactúan correctamente visualmente y con la física (si se usa simulación) son más convincentes.
  • Diseño industrial: Para prototipos virtuales o visualizaciones de productos, la precisión es fundamental.
  • Compatibilidad con CAM/CAE: Si tu modelo se va a utilizar para fabricación (ej. impresión 3D), la geometría debe ser lo más precisa posible.
  • Optimización del flujo de trabajo: Generar engranajes con scripts te ahorra tiempo y garantiza la exactitud.

Conceptos Básicos de Engranajes para Modeladores ⚙️📖

Antes de sumergirnos en 3ds Max y MAXScript, es útil entender algunos términos clave relacionados con los engranajes. Esto te ayudará a comprender los parámetros que manipularemos.

📌 Nota: No es necesario ser un ingeniero mecánico, pero conocer estos términos básicos te dará una ventaja significativa.
TérminoDescripción
------
Número de dientesCantidad de dientes en el engranaje. Define la relación de transmisión.
Módulo (m)Relación entre el diámetro primitivo y el número de dientes. Estandariza el tamaño de los dientes.
------
Diámetro primitivoDiámetro del círculo imaginario donde los dientes de dos engranajes engranados se tocan sin deslizamiento.
Paso circularDistancia entre el mismo punto de dos dientes consecutivos a lo largo del círculo primitivo.
------
Ángulo de presiónÁngulo en el que se ejerce la fuerza entre los dientes. Comúnmente 20 grados.
AddendumAltura del diente por encima del círculo primitivo.
------
DedendumProfundidad del diente por debajo del círculo primitivo.

Estos parámetros son cruciales para definir la geometría de un engranaje y asegurarte de que dos engranajes puedan engranar correctamente.


Preparando el Entorno en 3ds Max 🛠️

Antes de empezar a modelar y programar, asegúrate de que tu entorno de 3ds Max esté configurado adecuadamente.

Unidades de Medida ✅

La precisión es clave. Trabaja con unidades reales.

  1. Ve a Customize > Units Setup....
  2. En Display Unit Scale, selecciona Generic Units o una unidad real como Centimeters o Millimeters.
  3. Haz clic en System Unit Setup... y asegúrate de que 1 Unit = 1.0 Centimeters (o la unidad que elijas). Esto es crítico para la precisión del script.
Menú Customize Units Setup (Configurar Unidades) System Unit Setup (Unidades de Sistema)

Abriendo el Editor de MAXScript 📝

Para escribir y ejecutar nuestro script, necesitaremos el editor de MAXScript.

  1. Ve a Scripting > MAXScript Editor... (o presiona F11).
  2. Se abrirá una nueva ventana. Aquí es donde pegaremos y ejecutaremos nuestro código.

Modelado Base de un Engranaje (Enfoque Híbrido) 🎨

Empezaremos creando un disco base para nuestro engranaje y luego usaremos MAXScript para generar los dientes. Este enfoque híbrido nos da flexibilidad y control.

1. Creando el Cuerpo Principal del Engranaje

  1. En el panel Create > Geometry > Standard Primitives, selecciona Cylinder.
  2. En la vista Top, crea un cilindro en el origen (0,0,0).
  3. En el panel Modify, ajusta sus parámetros iniciales. Por ejemplo:
    • Radius: 4.0 cm (este será nuestro radio primitivo aproximado)
    • Height: 1.0 cm
    • Height Segments: 1
    • Cap Segments: 1
    • Sides: 60 (para un círculo suave)
💡 Consejo: Nombra tus objetos de forma descriptiva, por ejemplo, `Engranaje_Principal_Base`.

2. Preparando para los Dientes

Convertiremos el cilindro a un Editable Poly para poder manipularlo.

  1. Selecciona el cilindro.
  2. Haz clic derecho y elige Convert To > Convert to Editable Poly.

Generación de Dientes de Engranaje con MAXScript 🚀

Aquí es donde entra la magia de MAXScript. Usaremos un script para generar la forma de un diente, que luego duplicaremos y uniremos a nuestro engranaje base. Este script se basa en la geometría de evolvente, la forma más común y eficiente para los dientes de engranaje.

Entendiendo el Script de Dientes Evolventes

El siguiente script generará un perfil de diente de engranaje basado en los parámetros de un engranaje estándar. Lo pegaremos en el Editor de MAXScript.

fn createInvoluteGearTooth module numTeeth pressureAngle addendum dedendum = (
    local radiusFactor = module / 2.0
    local pitchRadius = radiusFactor * numTeeth
    local baseRadius = pitchRadius * cos (degToRad pressureAngle)
    local addendumRadius = pitchRadius + addendum
    local dedendumRadius = pitchRadius - dedendum

    local numPoints = 50 -- Número de puntos para la curva evolvente
    local points = #()

    -- Generar perfil evolvente
    for i = 0 to numPoints do
    (
        local angle = i as float / numPoints * (pi / numTeeth) -- Ángulo para el perfil de un lado del diente
        local involuteAngle = (angle - tan angle) -- Ecuación de la involuta

        local x = baseRadius * (cos involuteAngle + involuteAngle * sin involuteAngle)
        local y = baseRadius * (sin involuteAngle - involuteAngle * cos involuteAngle)
        
        append points [x, y, 0]
    )

    -- Crear la base del diente
    local halfToothAngle = (pi / numTeeth) / 2.0
    local rootRadius = dedendumRadius

    local p0 = [rootRadius * cos (-halfToothAngle), rootRadius * sin (-halfToothAngle), 0]
    local p1 = [rootRadius * cos (halfToothAngle), rootRadius * sin (halfToothAngle), 0]

    -- Reflejar los puntos para el otro lado del diente
    local reflectedPoints = #()
    for i = points.count - 1 to 1 by -1 do
    (
        local p = points[i]
        append reflectedPoints [p.x, -p.y, 0]
    )

    -- Combinar todos los puntos para formar el spline del diente
    local gearToothShape = SplineShape()
    local s = addNewSpline gearToothShape
    addKnot s #corner #bezier p0
    addKnot s #corner #bezier p1
    for p in reflectedPoints do (
        addKnot s #corner #bezier p
    )
    for p in points do (
        addKnot s #corner #bezier p
    )
    close s
    updateShape gearToothShape

    gearToothShape.renderable = true
    gearToothShape.thickness = 1.0 -- Ajusta el grosor según la altura del engranaje
    gearToothShape.baseRadius = baseRadius
    gearToothShape.pitchRadius = pitchRadius
    gearToothShape.name = uniqueName ("Gear_Tooth_Profile")
    gearToothShape
)

-- Parámetros de ejemplo para un engranaje:
-- Módulo (m): Relación de tamaño del diente. Afecta directamente el radio primitivo.
-- Número de dientes (Z): Cantidad de dientes.
-- Ángulo de presión (alpha): Generalmente 20 grados.
-- Addendum: Altura del diente por encima del círculo primitivo. Normalmente 1 * Módulo.
-- Dedendum: Profundidad del diente por debajo del círculo primitivo. Normalmente 1.25 * Módulo.

local currentModule = 0.5 -- Un módulo más pequeño para un engranaje de 4cm de radio
local currentNumTeeth = 40
local currentPressureAngle = 20.0
local currentAddendum = 1.0 * currentModule
local currentDedendum = 1.25 * currentModule

-- Ejecutar la función para crear el diente
-- toothProfile = createInvoluteGearTooth currentModule currentNumTeeth currentPressureAngle currentAddendum currentDedendum

-- Para extrudir el perfil y crear el diente 3D directamente
local toothProfile = createInvoluteGearTooth currentModule currentNumTeeth currentPressureAngle currentAddendum currentDedendum
extrude toothProfile amount: 1.0

Pasos para Ejecutar el Script:

  1. Abre el MAXScript Editor (F11).
  2. Copia y pega el código anterior en el editor.
  3. Ajusta los parámetros: Modifica currentModule, currentNumTeeth, currentPressureAngle, currentAddendum y currentDedendum según tus necesidades. Por ejemplo, si tu cilindro base tenía un radio de 4 cm y quieres un engranaje de 40 dientes, un módulo de 0.5 puede ser adecuado (Radio Primitivo = (Módulo * Dientes) / 2 = (0.5 * 40) / 2 = 10 cm, lo cual es más grande de 4cm. Vamos a ajustar el radio del cilindro a 10 cm si queremos 40 dientes con módulo 0.5 o ajustamos el número de dientes/módulo para que coincida con nuestro cilindro base).
    • Para nuestro cilindro base de 4 cm de radio, necesitamos un radio primitivo de ~4 cm. Si Radius = (Module * NumTeeth) / 2, entonces 4 = (0.5 * NumTeeth) / 2. Esto daría NumTeeth = 16. Vamos a usar estos valores para nuestro ejemplo.
    • local currentModule = 0.5
    • local currentNumTeeth = 16
    • local currentPressureAngle = 20.0
    • local currentAddendum = 1.0 * currentModule
    • local currentDedendum = 1.25 * currentModule
  4. Haz clic en Tools > Evaluate All (o presiona Ctrl + E).
  5. Verás que se crea una forma de spline 2D que representa un diente de engranaje. El script ya aplica un modificador Extrude para darle volumen, creando un solo diente 3D.
⚠️ Advertencia: Asegúrate de que las unidades de sistema y de visualización estén configuradas correctamente antes de ejecutar el script. Unidades inconsistentes pueden llevar a tamaños incorrectos.

Explicación Breve del Script:

  • La función createInvoluteGearTooth toma los parámetros del engranaje y calcula los radios esenciales (primitivo, base, addendum, dedendum).
  • Genera puntos a lo largo de la curva evolvente (la forma ideal del flanco del diente) y los refleja para crear ambos lados.
  • Crea una forma SplineShape y añade los puntos calculados para formar el perfil del diente.
  • Finalmente, el script extrude este perfil para convertirlo en un objeto 3D. El objeto resultante se centra en el origen.

Ensamblando los Dientes al Engranaje Base 🧩

Ahora tenemos un solo diente y un cuerpo de engranaje. Necesitamos duplicar el diente y adjuntarlo.

1. Duplicar y Rotar los Dientes

  1. Selecciona el diente 3D creado por el script.
  2. Asegúrate de que su punto de pivote esté en el centro del engranaje (normalmente, si el cilindro y el diente se crearon en el origen, ya debería estarlo).
    • Si no lo está, ve a Hierarchy > Affect Pivot Only, luego Center to Object y Align to World si es necesario, y desactiva Affect Pivot Only.
  3. Activa el Angle Snap Toggle (icono del imán con un ángulo) en la barra de herramientas principal. Configura el ángulo a 360 / Número de Dientes (ej. 360 / 16 = 22.5 grados).
  4. Con el diente seleccionado, mantén pulsada la tecla Shift y arrastra el diente rotándolo alrededor del eje Z. Gira exactamente los 22.5 grados que calculaste.
  5. En el cuadro de diálogo Clone Options, selecciona Instance (para que los cambios en uno afecten a todos) o Copy (si quieres dientes independientes). Para este caso, Instance es bueno si quieres probar con diferentes alturas o modificadores. En Number of Copies, introduce Número de Dientes - 1 (ej. 15 si ya tienes uno).
  6. Haz clic en OK.

Ahora tendrás todos los dientes de tu engranaje perfectamente espaciados.

💡 Consejo: Si usas `Instance`, puedes modificar uno de los dientes (por ejemplo, escalar su altura o aplicar un modificador `Chamfer` a sus bordes) y ver cómo los cambios se aplican a todos los demás.

2. Unir los Dientes al Cuerpo Principal

  1. Selecciona el cuerpo principal del engranaje (Engranaje_Principal_Base).
  2. En el panel Modify, desplázate hacia abajo y en la sección Edit Geometry, haz clic en Attach.
  3. Haz clic en uno de los dientes. Se te preguntará si quieres convertir la instancia en un objeto único. Elige Yes.
  4. Continúa haciendo clic en todos los demás dientes. Esto fusionará todos los dientes con el cuerpo principal en un solo objeto Editable Poly.
  5. Una vez adjuntados todos los dientes, desactiva Attach.

3. Soldar Vértices para una Geometría Limpia

Aunque los dientes están ahora adjuntos, sus vértices con el cuerpo principal aún no están soldados. Esto es crucial para una geometría limpia y un suavizado correcto.

  1. Con el engranaje seleccionado y en modo Editable Poly.
  2. Ve al subobjeto Vertex.
  3. Selecciona todos los vértices del objeto (Ctrl + A).
  4. En la sección Edit Vertices, haz clic en Weld Settings (el cuadradito al lado de Weld).
  5. Aumenta el Threshold (umbral) gradualmente hasta que veas que los vértices que deben unirse (los de la base del diente con el cuerpo del engranaje) se sueldan. Comienza con un valor pequeño como 0.1 cm y auméntalo. Ten cuidado de no soldar vértices que no deberían unirse.
  6. Haz clic en OK.

Ahora tienes un engranaje con una geometría limpia y unificada.


Refinamiento del Modelo y Agregando Detalles 💎

Un engranaje realista a menudo tiene un eje, agujeros para tornillos y chaflanes.

1. Añadiendo un Agujero Central

  1. Selecciona tu engranaje Editable Poly.
  2. Ve al subobjeto Polygon.
  3. Selecciona el polígono superior e inferior del centro del engranaje.
  4. Usa Inset para crear un polígono interior.
  5. Usa Extrude (con un valor negativo) o Bridge (entre el polígono superior y el inferior) para crear el agujero pasante.

2. Chaflanes (Chamfer) para Bordes Suaves

Los bordes afilados no existen en la realidad. Añadir chaflanes mejora el realismo y el suavizado.

  1. En el subobjeto Edge, selecciona los bordes que quieras suavizar (ej. los bordes superiores e inferiores de los dientes, los bordes del agujero central).
  2. En la sección Edit Edges, haz clic en Chamfer Settings.
  3. Ajusta el Amount y el número de Segments para lograr un chaflán suave. Un Amount pequeño (ej. 0.05 cm) con 2 o 3 segmentos suele ser suficiente.
  4. Haz clic en OK.
💡 Consejo: Para seleccionar rápidamente todos los bordes externos de la parte superior e inferior del engranaje, selecciona un polígono, luego usa `Grow` (`Ctrl` + Page Up) varias veces y luego convierte la selección a `Edge` (`Ctrl` + E). Luego `Loop` o `Ring` para seleccionar los bordes deseados y aplicar el chaflán.

Creación de un Mecanismo Simple: Dos Engranajes 🔗

Ahora que tenemos un engranaje, vamos a crear un segundo engranaje para formar un mecanismo simple de transmisión.

1. Crear el Segundo Engranaje

Podemos usar el mismo script de MAXScript para crear un segundo engranaje con una relación de transmisión diferente.

  1. Abre el MAXScript Editor de nuevo.
  2. Modifica los parámetros para el segundo engranaje. Por ejemplo, si el primero tiene 16 dientes, el segundo podría tener 32 para una relación 1:2.
    • local currentModule = 0.5
    • local currentNumTeeth = 32 (el doble de dientes)
    • local currentPressureAngle = 20.0
    • local currentAddendum = 1.0 * currentModule
    • local currentDedendum = 1.25 * currentModule
  3. Crea un nuevo cilindro base con un radio de (currentModule * currentNumTeeth) / 2 = (0.5 * 32) / 2 = 8 cm. (Radius: 8.0 cm).
  4. Convierte el cilindro a Editable Poly.
  5. Ejecuta el script para generar el diente de este nuevo engranaje.
  6. Sigue los pasos de Duplicar y Rotar los Dientes (usando 360 / 32 = 11.25 grados) y Unir los Dientes al Cuerpo Principal.
  7. Aplica los refinamientos (agujero central, chaflanes).

2. Posicionar los Engranajes para que Engranen Correctamente

Los centros de los engranajes deben estar separados por la suma de sus radios primitivos. Esto es clave.

  1. Radio Primitivo del Engranaje 1: (currentModule * currentNumTeeth) / 2 = (0.5 * 16) / 2 = 4 cm.
  2. Radio Primitivo del Engranaje 2: (currentModule * currentNumTeeth) / 2 = (0.5 * 32) / 2 = 8 cm.
  3. Distancia entre centros: 4 cm + 8 cm = 12 cm.
  4. Mueve el Engranaje_1 a [0, 0, 0].
  5. Mueve el Engranaje_2 a [12, 0, 0] (o [0, 12, 0], etc.).

Ahora, gíralos manualmente un poco hasta que veas que los dientes encajan correctamente. Este paso es visual y de ajuste fino. Es posible que tengas que rotar uno de los engranajes un pequeño ángulo para que los dientes se alineen perfectamente.

Distancia = R1 + R2 Engranaje A Radio: R1 | Dientes: Z1 Engranaje B Radio: R2 | Dientes: Z2 PUNTO TANGENTE

3. Animación Básica (Opcional) 🎬

Para probar si tu mecanismo funciona, puedes animarlo brevemente.

  1. Activa Auto Key.
  2. Ve al fotograma 0 y rota el Engranaje_1 a 0 grados.
  3. Ve al fotograma 100 y rota el Engranaje_1 360 grados en el eje Z.
  4. Con Engranaje_2 seleccionado, abre el Curve Editor (o Graph Editors > Dope Sheet).
  5. Añade un controlador Link Constraint o usa Wire Parameters.
    • Wire Parameters: Selecciona Engranaje_1, haz clic derecho y elige Wire Parameters > Transform > Rotation > Z Rotation. Arrastra al Engranaje_2 y elige Transform > Rotation > Z Rotation.
    • En el cuadro de diálogo, introduce la expresión Z_Rotation * (-Engranaje1.NumTeeth / Engranaje2.NumTeeth) donde Engranaje1.NumTeeth y Engranaje2.NumTeeth son el número de dientes de cada engranaje. Para nuestro ejemplo, sería Z_Rotation * (-16 / 32) o Z_Rotation * (-0.5).
    • Haz clic en Connect.
  6. Desactiva Auto Key y reproduce la animación. ¡Deberías ver ambos engranajes girar engranados!
90% Completado

Conclusión y Próximos Pasos 🚀

Has aprendido a modelar engranajes precisos en 3ds Max utilizando una combinación potente de modelado poligonal y MAXScript. Esta técnica te permite crear componentes mecánicos exactos, esenciales para proyectos de diseño industrial y animaciones realistas.

Recapitulación de lo Aprendido:

  • Configuración de unidades en 3ds Max para precisión.
  • Creación de un cuerpo base de engranaje con un cilindro.
  • Uso de un script de MAXScript para generar perfiles de dientes de engranaje evolventes.
  • Duplicación y ensamblaje de dientes al cuerpo principal.
  • Refinamiento del modelo con agujeros y chaflanes.
  • Creación y alineación de un mecanismo de dos engranajes.
  • Introducción a la animación de engranajes con Wire Parameters.

¿Qué Sigue? Explorando Más Allá 💡

  • Otros tipos de engranajes: Investiga scripts para engranajes cónicos, helicoidales o de tornillo sin fin.
  • Interfaz de Usuario con MAXScript: Crea un rollout de MAXScript para hacer un generador de engranajes completo y reutilizable sin tener que editar el código directamente cada vez.
  • Mecanismos complejos: Intenta modelar cajas de cambios, mecanismos de reloj o transmisiones más avanzadas.
  • Texturizado y Renderizado: Aplica materiales PBR y renderiza tus mecanismos para visualizaciones fotorrealistas.
  • Simulación de Física: Usa herramientas como MassFX para simular la interacción física de tus engranajes.
📌 Nota: La comunidad de 3ds Max tiene muchos recursos y scripts de MAXScript disponibles. ¡No dudes en buscar y experimentar!

Esperamos que este tutorial te haya proporcionado las herramientas y el conocimiento necesario para abordar el modelado de mecanismos con confianza y precisión. ¡Feliz modelado!

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!

Modelado de Engranajes y Mecanismos Precisos en 3ds Max con Scripting MAXScript ⚙️ | tutoriales.com