Imran's personal blog

November 4, 2023

IML

Filed under: Uncategorized — ipeerbhai @ 8:00 am

Background

IML stands for Imran’s mesh library. It’s a python library designed to work with LLMs to generate scenes and geometry. IML itself has implimentations for Blender and Rhino, but each implimentation is at different states of readiness. It doesn’t depend on a specific engine — rather, it is its own abstraction language for mesh/modelling concepts. IML is based on a few different concepts:
– Constructive Solid Geometry. All shapes are made of very few solid primitives. These solid primitives can be added, subtracted, or intersected to create complex shapes. All meshes are quad faced by nature.
– Any object can be translated, scaled, or rotated in world space. This includes meshes, lights, planes, or any other object.
– Mesh Density. Shapes can have the density of vertices changed beyond the minimum needed to define the geometry. We can increase or decrease vertex density on the fly.
– Vertex distortion. All meshes are comprised of vertices, and those vertices can be distorted in various ways. We can translate the vertex along its normal, or free move it in space. We can select vertices by distance to points, so we don’t need to know ahead of time where a vertex is located.
– A standard asset library with a series of helper classes to load assets and prerigged characters.
– Various utility functions to help work with importing files, manage textures, rigs, lights, or time, or the scene itself.

Concept of Operations

IML works in “world space”, and creates a standard Cartesian cubic world with XY bring the ground plane, and Z being the Up/Down direction. While it can be used for modelling objects from primitives, its real strength comes from managing assets in a standard way. It also tries to make 3d space more accessible to developers without a 3d background. For example, lights can be colored with HTML codes, as can simple textures. It uses standard engines underneath — supporting both Rhino and Blender at the moment. This allows developers to choose the underlying tool as best as possible. If you want very accurate models for 3d printing, use Rhino as the underlying tool ( and lose some functionality ) to make very accurate objects. If you want to make fast animations, use Blender as the underlying tool.

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Blog at WordPress.com.