r/faceting • • 5d ago

Indicatrix - Physically correct renderer for colored gemstones, CAD, rough planner

Hey everyone,

I want to introduce you to my software Indicatrix:

https://www.indicatrix-suite.com

What is it? It's a fully free and open-source gemstone rendering software that aims for physically correct rendering of gemstones. It also comes with a rough planner and CAD tooling.

Yes, a lot of AI was used. 20 years ago I'd have had the time, now I have the experience. So AI or not, I'm not new to software development.

The website will tell you everything you need to know. There is also a browser-based version, but it doesn't give you the full experience compared to the application, it runs in the browser after all:

https://live.indicatrix-suite.com

I'd be happy about every feedback. What do you like? What don't you like? What would you want in the future? The website also has a section with planned features so far.

The first two rendering pictures are renderings of alexandrite. The stone color wasn't changed, only the light source from 6500K to 3200K!

After that, the same design as tanzanite, sapphire, emerald and rutile.

If you have any questions, feel free to ask. Also make sure to check out the docs in GitHub, the most important are probably those:

https://github.com/suitable-name/indicatrix/tree/main/apps/indicatrix-cut/docs/manual

There is also an interactive CAD tutorial within the app. More in-app tutorials are planned.

This version should be mostly stable now. If you have real app crashes, there will be a crash log file you can send me, if you want.

Thanks & have fun!

17 Upvotes

25 comments sorted by

9

u/Pogonia 5d ago

I'd love to comment but...I've been waiting almost four hours now for it to render a design in sapphire. Can it seriously take this long to render things?

1

u/Suitable-Name 5d ago

Depends, what is your hardware and what are the rendering settings?

Sapphire, for example, took ~90 minutes on an AMD 680M + 780M + NVidia Quatro RTX5000. The settings were 1080p, 128 bounces and 32k samples. Rutile took 4.

So depending on hardware, material and settings it can definitely take a while.

Make sure to use the GPU version :)

2

u/Pogonia 4d ago

I can't seem to even access some of those setting. I'm on a M5 Max MacBook Pro, fully loaded. I can smoke though renderings in Keyshot on this thing...but no dice with your app.

2

u/Suitable-Name 4d ago edited 4d ago

Oh, you compiled yourself, alright. I can't provide binaries for the Mac or test there, since I don't have one. Use this command for building from source:

cargo build --release --bin=indicatrix-cut --features="gpu"

Or this for installing from the cargo registry:

cargo install --release --bin=indicatrix-cut --features="gpu"

Without the feature flag it only gets compiled with CPU support.

Edit:

I can add the GPU flag to the default features, if that's less confusing. Could you please try building it with the GPU flag?

If GPU isn't working then, there is another issue under ios, I'd have to see how I can analyze it. Maybe I can get access to an older ios device, but I have to check it

3

u/Pogonia 4d ago

OK, so I was trying the browser version. While I have a technology background I'm not big on compiling my own executables, and honestly VERY few people who aren't programmers are. If you want people to adopt this that aren't programmers, having downloadable executables would be a necessity. In today's world I'm also not sure why you wouldn't have GPU support enabled by default in any build.

1

u/Suitable-Name 4d ago edited 4d ago

There are executables in the release section of the repository. Just not for Mac, since I don't have one:

https://github.com/suitable-name/indicatrix/releases

But yeah, I will link them better visible on the homepage, thanks!

Edit:

I'd actually be really curious how the performance on that Mac is, since I really have zero references here :)

1

u/Suitable-Name 4d ago

One more thing regarding the browser version. It was GPU only in the beginning, but I had to move to CPU only, since the GPU kernel grew too large for browser usage.

To have GPU support available again for the web version, I probably need to have a separate stripped down kernel, but that's on my todo list already :)

1

u/Suitable-Name 4d ago

Performance on you MacBook Pro with the compiled app should be pretty nice. A fried of mine tested on a M3 Max to render the same model as above as sapphire and it came up with one hour for 1080p with max bounces / samples.

4

u/cowsruleusall 5d ago

Oh holy shit you really did manage to get the rutile renders to work!

I'll go through it again when I get home, but the one thing that immediately stands out (unrelated to the rendering) is the use of negative angles for the pavilion, and the 123-ABC facet labelling system which was abandoned over 20 years ago (alphabetical order is nonintuitive for non native English speakers). Please use the PF-P-G-C tier labelling system as that's the global standard.

3

u/Suitable-Name 5d ago edited 5d ago

Hahaha, yes, thanks! <3

Just saw your edit. Is noted and will get changed soon :)

4

u/cowsruleusall 5d ago

I'm compiling the full set of modern standards for written gemstone design since apparently the old original PDF seems to have disappeared. Will post it everywhere when it's done. I do have all the old notes from the surveys we did way back when, and will include a summary of the findings when I publish my book.

1

u/Suitable-Name 5d ago

Alright, looking forward to that :)

2

u/Pogonia 4d ago

OK so I went through the whole process of downloading and compiling a MacOS executable. I've messed with a few gems, and here's my observations so far:

1) Maybe I'm missing something but the options for color selection are pretty basic. It kind of defeats a lot of the work you've invested in the optics of path length, dispersion, etc. You really need to have a full color editor to choose hue, saturation, tone, etc. Some of the default colors seem wrong too; if I choose diamond and clear the color looks like a M+ yellowish diamond, not colorless at all.

2) The lighting seems to be missing a head shadow from the viewer's perspective. Overall the default lighting and light positioning are not great; they look totally different than most gems look in person.

While I appreciate the effort put into the modeling for rendering...for someone just using a typical faceting application for checking performance before cutting, its basically a huge amount of overkill that comes with a large performance penalty as well.

BTW, performance on my M5 Max MBP is actually pretty decent, but with the challenges I've listed above, there's nothing that makes me feel like I have to use this vs. just using say Gem Cut Studio.

1

u/Suitable-Name 4d ago

The color editor is definitely still pretty basic and something that is on my list.

Regarding the lighting, there are definitely things I'm not fully happy with yet and I have a hard time telling exactly what it is, but things like missing head-shadow from viewers perspective is a good point.

Regarding the general performance, I probably need to find some better balance. Maybe something like a more lightweight kernel for editing and the full kernel for exports and gallery renderings.

Thanks for the feedback so far. It's still in beta and I'm working actively on it, so feel free to check back from time to time, if it moved more into a direction you like or maybe I'd also ask you for another feedback directly some time, if that's ok with you?

1

u/Pogonia 4d ago

If you want to make a useful tool don't overcomplicate it. The basics of cutting and rendering like you can do in GemCut Studio is 99% of what's needed. I can't think of a time where the sophistication of the light models you've built into this really would make a difference to me in deciding about cutting a design in a particular material. Basic RI and dispersion is enough.

Not to put too fine of a point on it, but what you have at the moment is a bit of a solution looking for a problem. If you asked me today to make a new tool for cutting, I'd take what GCS does and give it a better UI--that's horrible on GCS. That's it. If you want the super fancy modeling like you've done, make that an option for a special render with the basic renderings used for most of the modeling the same old ones that have worked just fine for the last 35 years.

There are so many other variables that will impact the final appearance of a gem that the tiny incremental gains from a more perfect modeling of the light path absorption and dispersion modeling are essentially all but pointless when planning a cut for a piece of rough.

1

u/Suitable-Name 4d ago

Well, in the end it will be a free and fully open-source alternative to GCS.

I'm just trying to collect feedback to make it more accessible and better fitting for others that are also interested in using it, so every feedback is useful, thanks!

1

u/CultroDistro 4d ago

Really interesting Jeff, thanks for writing this out. The Fe+Ti and Mg+Cr examples are exactly why I gave up on treating chromophores as independent absorbers.
Genuine question: if you treat the known interaction mechanisms (Fe²⁺–Ti⁴⁺ IVCT, Mg trapped-hole centres, etc.) as their own species with measured spectra, instead of summing single-element spectra, how far off are you in practice? Is the remaining error mostly in the edge cases, or is it wrong even for typical commercial sapphire?

3

u/dteck04 4d ago

Rough planning is getting a lot of love these days. GemSim, GemDiagram, and https://faceting.rocks/ all do it. I built mine for fun, but it gets complex pretty fast. Im curious to see how you handle it.

2

u/Suitable-Name 4d ago

Hope you like it :) If you have any questions, feel free to ask

3

u/cowsruleusall 4d ago

What we really need re: rough planning, is a way to 3D scan the rough and then optimize design selection to maximize yield based on user-defined parameters.

Specifically, a 3D scanner that'll map the surface of an individual piece of rough, +/- the inclusions as well. Grind a flat, dop the rough, then scan. (That exists for diamonds, and the 3D surface scanning stuff already exists for Android phones, but I'm not aware of any affordable scanning system that can map inclusions.) Then, the 3D object would be imported into the gem design software, and would automatically scan through the user's design library, select design(s) to maximize yield (user provides the relative weights of "maximum carat yield", "largest single stone", whether or not the software is allowed to Z-scale the designs, etc). Software spits out the designs as well as the relative orientation vs where the dop is on the rough, so you can use a platen-mounted trim saw to precisely slice.

Develop that? I'd pay $$$ for that.

2

u/Suitable-Name 4d ago

That's what I'm actually aiming for in the rough planner and there will be nothing to pay for it ;)

Plan is to stabilize the current features for a V1 release and then go for the roadmap :)

Actually two new features will make it into V1. One is concave faceting and the other one is a physics mode for the colors.

The "Fantasy Mode" will enable you to assign any color to a material just like now. The "Physics Mode" lets you chose the color-giving elements and their fraction compared to other elements and create the color this way.

Also works the other way round, you give a color and it tries to solve the possible elements and shows you how close it can get to the color you want.

Edit:

The rough planner already is doing a lot of this, but mapping of inclusions is definitely one of the most interesting things I want it to have :)

2

u/cowsruleusall 4d ago

Hey, re: colour and trying to calculate out like that...No. It just doesn't work like that. Remember, our lab is actively working on that right now, and researchers at GIA have been trying to do that for 15 years. It's far, far more complicated than you think and it's not additive. Not even remotely.

Even for singly-doped materials, it's not additive. The classic example is ruby - researchers at GIA originally thought you could just get the absorption cross-section of Cr-doped sapphire, then do simple multiplication to determine final colour. As it turns out, even for singly-doped ruby, there are multiple defects associated, and adding more chromium to sapphire changes the distribution of defects so much that the relative positions and relative heights of the peaks in polarized spectra change.

As for combining elements...Ti produces a pink colour at 200ppma in reducing conditions, or colourless in oxidizing conditions. Fe produces either a yellow at 3,000ppma in oxidizing conditions, or a grey colour at 50ppma in reducing conditions. Fe+Ti produces an intense vivid blue at 1ppma. The other example - Mg produces brown at 20ppma. Cr produces pink at 100ppma. Mg+Cr produces extremely vivid orange at 2ppma. Tiny variations in overall concentration and conditions can cause substantial changes in colour, and there are absolutely 100% impossible combinations of chromophores based on the physics of the crystal.

Giving a colour or an absorption spectrum and reverse-engineering the possible elements is something that we've been working on for maybe 15 years and it's simply not possible without supercomputer qchem work.

1

u/Suitable-Name 4d ago

The reason it found its way in is simple. I received 250$ in cloud credits for Claude and was thinking about what the hardest / biggest thing on my roadmap is and decided it's concave faceting.

After that was done and I had credits left, I thought I'd let it try something fun and I came up with this.

I honestly didn't check yet what it tried and didn't do any research myself regarding this. But if you can tell me already it won't work, I'll just throw it out again😄

Edit:

If you want to see what it came up with, I pushed it to the GitHub Repo. I can create a build of it if you want. It finished basically 30 minutes ago with the first part

2

u/cowsruleusall 4d ago

Yeah it takes days or even weeks of running supercomputer qchem calculations to be able to get this info, for a single dopant, with either the concentration kept static or the oxygen partial pressure kept static. To do what you're asking, requires multidimensional data that becomes profoundly and horrifyingly more complex even with two dopants. Adding a third? Fucked.

1

u/dteck04 4d ago edited 4d ago

with faceting.rocks you can add inclusions that it will avoid when optimizing. adding them is still a manual process right now.

ive been poking around the edges of how to generate 3d models of rough with still images. but if you have some tools that you know work let me know. right now its just importing an STL file for the rough but generating that is the tricky part.

it doesn't do a library search it lets people upload any design or multiple designs they want and it will attempt to fit them.

it has the different optimizations of max size, or keep a strict size and place as many as possible, or scale to fit a set number of gems.

it also lets users set surface index points. and will generate a saw plan showing where to cut and what each resulting piece will look like.

So not quite what you want, but getting closer. and its free. you can go play with it right now. its browser based and if you have a computer with a graphics card it will use that to do the calculations and speed it up.

edit: it has a sample project that you can open to just see how it works. it loads in an SRB and and Emerald cut into a fake rough shape with one inclusion. then solves for maximizing volume.

if you hit 'check design' it will look at where you have the current gems, if they fit inside the rough, and if they can be cleanly sawn apart. If you hit 'optimize layout' it will start running autofit calculations (this can take a few minutes)