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.

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!
¿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.
| Término | Descripción |
|---|---|
| --- | --- |
| Número de dientes | Cantidad 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 primitivo | Diámetro del círculo imaginario donde los dientes de dos engranajes engranados se tocan sin deslizamiento. |
| Paso circular | Distancia 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. |
| Addendum | Altura del diente por encima del círculo primitivo. |
| --- | --- |
| Dedendum | Profundidad 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.
- Ve a
Customize > Units Setup.... - En
Display Unit Scale, seleccionaGeneric Unitso una unidad real comoCentimetersoMillimeters. - Haz clic en
System Unit Setup...y asegúrate de que1 Unit = 1.0 Centimeters(o la unidad que elijas). Esto es crítico para la precisión del script.
Abriendo el Editor de MAXScript 📝
Para escribir y ejecutar nuestro script, necesitaremos el editor de MAXScript.
- Ve a
Scripting > MAXScript Editor...(o presiona F11). - 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
- En el panel
Create > Geometry > Standard Primitives, seleccionaCylinder. - En la vista
Top, crea un cilindro en el origen (0,0,0). - En el panel
Modify, ajusta sus parámetros iniciales. Por ejemplo:Radius: 4.0 cm (este será nuestro radio primitivo aproximado)Height: 1.0 cmHeight Segments: 1Cap Segments: 1Sides: 60 (para un círculo suave)
2. Preparando para los Dientes
Convertiremos el cilindro a un Editable Poly para poder manipularlo.
- Selecciona el cilindro.
- 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:
- Abre el
MAXScript Editor(F11). - Copia y pega el código anterior en el editor.
- Ajusta los parámetros: Modifica
currentModule,currentNumTeeth,currentPressureAngle,currentAddendumycurrentDedendumsegú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, entonces4 = (0.5 * NumTeeth) / 2. Esto daríaNumTeeth = 16. Vamos a usar estos valores para nuestro ejemplo. local currentModule = 0.5local currentNumTeeth = 16local currentPressureAngle = 20.0local currentAddendum = 1.0 * currentModulelocal currentDedendum = 1.25 * currentModule
- Para nuestro cilindro base de 4 cm de radio, necesitamos un radio primitivo de ~4 cm. Si
- Haz clic en
Tools > Evaluate All(o presiona Ctrl + E). - Verás que se crea una forma de spline 2D que representa un diente de engranaje. El script ya aplica un modificador
Extrudepara darle volumen, creando un solo diente 3D.
Explicación Breve del Script:
- La función
createInvoluteGearToothtoma 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
SplineShapey 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
- Selecciona el diente 3D creado por el script.
- 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, luegoCenter to ObjectyAlign to Worldsi es necesario, y desactivaAffect Pivot Only.
- Si no lo está, ve a
- Activa el
Angle Snap Toggle(icono del imán con un ángulo) en la barra de herramientas principal. Configura el ángulo a360 / Número de Dientes(ej.360 / 16 = 22.5grados). - Con el diente seleccionado, mantén pulsada la tecla Shift y arrastra el diente rotándolo alrededor del eje
Z. Gira exactamente los22.5grados que calculaste. - En el cuadro de diálogo
Clone Options, seleccionaInstance(para que los cambios en uno afecten a todos) oCopy(si quieres dientes independientes). Para este caso,Instancees bueno si quieres probar con diferentes alturas o modificadores. EnNumber of Copies, introduceNúmero de Dientes - 1(ej.15si ya tienes uno). - Haz clic en
OK.
Ahora tendrás todos los dientes de tu engranaje perfectamente espaciados.
2. Unir los Dientes al Cuerpo Principal
- Selecciona el cuerpo principal del engranaje (
Engranaje_Principal_Base). - En el panel
Modify, desplázate hacia abajo y en la secciónEdit Geometry, haz clic enAttach. - Haz clic en uno de los dientes. Se te preguntará si quieres convertir la instancia en un objeto único. Elige
Yes. - 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. - 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.
- Con el engranaje seleccionado y en modo
Editable Poly. - Ve al subobjeto
Vertex. - Selecciona todos los vértices del objeto (Ctrl + A).
- En la sección
Edit Vertices, haz clic enWeld Settings(el cuadradito al lado deWeld). - 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 como0.1cm y auméntalo. Ten cuidado de no soldar vértices que no deberían unirse. - 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
- Selecciona tu engranaje
Editable Poly. - Ve al subobjeto
Polygon. - Selecciona el polígono superior e inferior del centro del engranaje.
- Usa
Insetpara crear un polígono interior. - Usa
Extrude(con un valor negativo) oBridge(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.
- En el subobjeto
Edge, selecciona los bordes que quieras suavizar (ej. los bordes superiores e inferiores de los dientes, los bordes del agujero central). - En la sección
Edit Edges, haz clic enChamfer Settings. - Ajusta el
Amounty el número deSegmentspara lograr un chaflán suave. UnAmountpequeño (ej. 0.05 cm) con 2 o 3 segmentos suele ser suficiente. - Haz clic en
OK.
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.
- Abre el
MAXScript Editorde nuevo. - 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.5local currentNumTeeth = 32(el doble de dientes)local currentPressureAngle = 20.0local currentAddendum = 1.0 * currentModulelocal currentDedendum = 1.25 * currentModule
- Crea un nuevo cilindro base con un radio de
(currentModule * currentNumTeeth) / 2 = (0.5 * 32) / 2 = 8cm. (Radius: 8.0 cm). - Convierte el cilindro a
Editable Poly. - Ejecuta el script para generar el diente de este nuevo engranaje.
- Sigue los pasos de
Duplicar y Rotar los Dientes(usando360 / 32 = 11.25grados) yUnir los Dientes al Cuerpo Principal. - 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.
- Radio Primitivo del Engranaje 1:
(currentModule * currentNumTeeth) / 2 = (0.5 * 16) / 2 = 4cm. - Radio Primitivo del Engranaje 2:
(currentModule * currentNumTeeth) / 2 = (0.5 * 32) / 2 = 8cm. - Distancia entre centros:
4 cm + 8 cm = 12 cm. - Mueve el
Engranaje_1a[0, 0, 0]. - Mueve el
Engranaje_2a[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.
3. Animación Básica (Opcional) 🎬
Para probar si tu mecanismo funciona, puedes animarlo brevemente.
- Activa
Auto Key. - Ve al fotograma 0 y rota el
Engranaje_1a 0 grados. - Ve al fotograma 100 y rota el
Engranaje_1360 grados en el eje Z. - Con
Engranaje_2seleccionado, abre elCurve Editor(oGraph Editors > Dope Sheet). - Añade un controlador
Link Constrainto usaWire Parameters.- Wire Parameters: Selecciona
Engranaje_1, haz clic derecho y eligeWire Parameters > Transform > Rotation > Z Rotation. Arrastra alEngranaje_2y eligeTransform > Rotation > Z Rotation. - En el cuadro de diálogo, introduce la expresión
Z_Rotation * (-Engranaje1.NumTeeth / Engranaje2.NumTeeth)dondeEngranaje1.NumTeethyEngranaje2.NumTeethson el número de dientes de cada engranaje. Para nuestro ejemplo, seríaZ_Rotation * (-16 / 32)oZ_Rotation * (-0.5). - Haz clic en
Connect.
- Wire Parameters: Selecciona
- Desactiva
Auto Keyy reproduce la animación. ¡Deberías ver ambos engranajes girar engranados!
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
MassFXpara simular la interacción física de tus engranajes.
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
- Modelado Paramétrico Avanzado en 3ds Max: Diseño de Arquitectura Modular 🏗️intermediate25 min
- Esculpiendo Formas Orgánicas en 3ds Max: Guía Completa de Modelado con Modificadores de Subdivisiónintermediate18 min
- Creación de Materiales PBR en 3ds Max: Texturizado Realista para tus Modelos 🎨intermediate18 min
- Modelado de Terreno Orgánico en 3ds Max: Montañas y Paisajes Realistas con Modificadoresintermediate18 min
- Rigging Esqueletal en 3ds Max: Dale Vida a tus Personajes y Modelos 🤖intermediate18 min
Comentarios (0)
Aún no hay comentarios. ¡Sé el primero!