Anvil Community Forum

Planning an outdoor kitchen

Hi all;
I am planning to build a website that enables users to design their own outdoor kitchen per spec. After inputting their dimensions and design preferences the data will be sent to the server to a python package to calculate the exact BOM (bill of material), price, carpenter cutting plans, the actual construction plans and a Bender render to be sent back and displayed for the potential customer

I still don’t know exactly how I am going to get Blender to work on the Anvil server but I’ll tackle that when I get there (any ideas anyone???)

Anyhow here is a picture of the Blender rendering I can already perform offline (is rendered automatically based on the user inputs

Jeff

1 Like

I don’t know if you can install Blender or if there are Blender libraries that can be installed on the Anvil server. If it is possible, then that’s the answer.

I have a similar workflow with other CAD software that can’t be installed on the Anvil server. They only work on Windows, with a logged in user, with the UI and the graphics card. The tricky part was to setup servers that are not servers and automatically login the user at reboot.

They have an uplink script that does the job and saves the result to an Anvil table.

The user requests the job, the form calls a server function, the server function creates a row on the queue table, starts a background task and returns the control to the form. The background task calls an uplink function, the uplink function starts a CAD (or Excel or something else) instance, does the job and saves the result to a database row. While the CAD script does its job, it updates the status column of its database row every few seconds.

On the form there is a timer that calls a server function to get the status of the job every few seconds, so it can show the status in the form and get the result when the job is completed.

Be careful with transaction conflicts: updating a row from a server function is much faster and unlikely to create a transaction error than the same update on an uplink script. So if many concurrent accesses to the database are likely, call server functions rather than doing it on the uplink.

2 Likes

This sounds really interesting! Since blender is open source, I wonder if your endgame could be containerizing blender, then having it spin up and run in the cloud, returning the results and tearing down the container.

I would maybe do SAAS, charge some multiple of the fees your google compute engine, azure, or aws charge you, and then let the user choose how fast they want it rendered?

Anyway, sounds cool. :slightly_smiling_face:

2 Likes

Hi.
Thanks for the responses
I would like to pick your brain a bit more if that’s ok

So if I can get Blender to run as a Python package (It is doable, I just haven’t figured out how to do it yet) You reckon I could upload the Blender part on to Google, Azure or AWS and have it compute the rendering upon demand, and all that via my Anvil website?

If this is the case it could be really good

If you have a dedicated plan, you should be able to install it on the same instance as Anvil.
Otherwise you can go the containerized way suggested by @ianbuywise.

Either way, you would have an uplink script that can write directly to the database and that can be called by the app.

Since you asked, I did some research and came up with quite a few sites like this:

I googled “render blender in the cloud” and it was one of the results, there are many.

I am assuming you can load the data through some sort of api, so you could probably use python for that?

@ianbuywise, thanks for the quick research!
What I don’t understand is how to connect a site like Render Pool to my Anvil server.
I still have a lot to learn obviously

I am also planning to make a similar project using Anvil.

I think using a render service like Render Pool is not a good idea, since you would have to send the .blend file with each job.

I have a couple of PC setup in a renderfarm, using Deadline, so planning to use anvil to submit a new job to Deadline. After the job is completed, you can have a post render script in deadline, to upload the file or something.

1 Like

So how is this different?
With Deadline you won’t have to send the .blend file?

The difference is in this case you are rendering on your local render network, if you have one. So it will be easier to setup a script to display the file that you rendered after it has been rendered. Also in this way, the data is always stored in your local network, so the time spend uploading/downloading data is removed.

But you need a dedicated machine to do the rendering.