Thursday, October 1, 2015

Material IO version 1.0 is out!

I just uploaded version 1.0 of Material IO and the big new feature is that there is now support for the Mitsuba Render engine!

Saturday, September 26, 2015

JARCH Vis version 0.7 is out!

I just posted version 0.7 of JARCH Vis, some new features include automatic detection of the rotation of a face group for custom roofing objects (expect for the occasional Flip Rotation click), custom treads are now possible for Normal style stairs. Fixed bug with materials panel and flooring.

Friday, September 25, 2015

JARCH Vis version 0.7 is coming out tomorrow!

I am putting the finishing touches on version 0.7 of JARCH Vis which will include being able to add custom treads to steps and automatic (for the most part) detection of plane rotation for custom roofing objects. As well as a couple bug fixes.

Saturday, September 12, 2015

JARCH Vis 0.5 is out!

Version 0.5 of JARCH Vis is out and now includes different types of roofing. Go to Released Scripts & Themes > JARCH Vis to download it.

Tuesday, August 11, 2015

Material IO Version 0.9 Is Out!

I just released Material IO version 0.9 which added support for the Generic Note Node addon by Linus Yng which can be found here. It does not transfer the text file if the node it setup that way, but rather will combine the text into a string and export that, so you keep the text on the other side, just not the text file.

Saturday, July 18, 2015

JARCH Vis 0.5 Update

As I announced earlier, JARCH Vis will be getting a roofing generator. This hopefully will be out in the next few weeks as I am getting much closer to being finished. All that is left is materials, two types of shingles, terra cotta, slate, and some minor tweaks. The main backbone is done though!

Saturday, July 11, 2015

JARCH Vis: Roofing is coming!

There hasn't been much activity with JARCH Vis these last few weeks, but that is because I have been working hard on creating JARCH Vis: Roofing which will support 7 different types of roofing. Here is an example image with tin:

Sunday, May 31, 2015

JARCH Vis 0.3 is out!

JARCH Vis version 0.3 is out with bug fixes and some new features, check it out on the Released Scripts & Themes page.

Saturday, May 30, 2015

JARCH Vis 0.3 coming out soon!

JARCH Vis version 0.3 will be coming out within the next day and includes these new features:

  • Ability to adjust thickness on flooring
  • Rotation when planes are converted to siding objects is automatically determined and the several stepped procedure which previously had to be done is no longer needed.

Sunday, May 24, 2015

JARCH Vis version 0.2 is out!

Version 0.2 of JARCH Vis now out, fixes and updates include:

  1. Fixed scale resetting with siding and flooring
  2. Added support for both metric and imperial units, just change in Blender's settings.
You can find the download link through the JARCH Vis part on under Released Scripts & Themes

Saturday, May 23, 2015

JARCH Vis 0.1 is out!

Check out the released scripts and themes page for all the details. Below is a picture of all the different types of siding it can create.

Friday, May 22, 2015

JARCH Vis Is Coming Soon!

JARCH Vis is coming out soon, it has the ability to create siding, flooring, and stairs, all of which can be edited at any point after creation! Which means no more having to redo stuff when you need to change a small detail. Also, railing will be coming soon once I finish it up. So keep an eye out for this release.

Sunday, March 1, 2015

Material Focus: Procedural Flooring Beech

I just uploaded a nice looking, procedural, beech wood material that is originally by TrueCryer on Blendermada. You have control over the color and bump amount an can adjust the scale of the material by scaling in the UV image editor.

Friday, February 20, 2015

Material Focus: Wood Procedural Flooring

Yesterday I uploaded a procedural wood flooring material and it is just incredible. The controls and good results of it just are neat to see in a material that doesn't have an image. Here is a picture of the material preview:

Here is a picture of it used in the real life setting.

You have controls for row offset, grain pattern, board width, board length, and a lot more.

Tuesday, February 17, 2015

Material Library: 50th Material!

I just posted the 50th material to the library! There is quite the selection there, from car paint, to diamond, to wood siding, to copper, to leather. If you have a material to submit then go the the Material Library page and scroll down, fill out the information and attach the file, then submit.

Material Focus: Leather

I just uploaded a Leather material that I found here by "TrueCryer" and it is an incredible material. Here is a rendered image of it:

It is one of the best procedural materials that I have ever seen, the perfect amount of gloss and incredible bumping on it make it a nice material to have. The only downside that I have found is that it takes longer to render, by about a factor of 2-2.5. A way to get around this if using a lot of it would be to bake a color, glossy, and bump map out, that would save a good bit of time I would think.

Friday, February 13, 2015

Material Focus: Brick Red Old

Today I posted another of my own materials which is a nice old red brick material. What makes it look good is not the image, but rather the bump mapping. It isn't to noticeable in this image:

but can really be seen in this one:

This image looks really good and it only uses one image, which is then run through some other nodes to get a nice looking black and white image to use for the bump. Another key piece in this image is the lighting, this is especially needed when using normal based maps, not actual geometry bumps.

Thursday, February 12, 2015

Material Focus: Siding Old

Just recently a new material was added to the material library and it is Siding Old, under the wood tab. It is one that I personally did and have licensed as CC0, so feel free to use as you would like. The image is tile-able and the pattern is horribly noticeable to a certain point.

The material ball isn't the best representation of it so I rendered out a better version. The one below is just a plane that has been UV unwrapped and has had the material applied to it. There is a noticeable line towards that bottom, but it isn't to bad.

Friday, February 6, 2015

Material Library

Well I just posted the Material Library, feel free to submit your materials, just make sure to read the agreement at the bottom.

Material Library

Since releasing Material IO I have been thinking that this file format would be a good way to host a material library, the file size is small and particular to that material. So you don't have to dig through a .blend to append the material. I have begun working on it and within the next few days I will be making it public, and there will be a submission page so people can contribute.

Thursday, February 5, 2015

Material IO: Version 0.5

Minor updates, extra data is exported for each node. From now on it will be backwards compatible, so update to here and make sure all materials are exported with this version.

Wednesday, February 4, 2015

Material IO: Version 0.2 Is Here

I just released version 0.2 of Material IO, some of the changes are:
  • Blender Internal materials support
  • Ability to import and export multiple materials at once
  • Ability to compress folders to save size

Tuesday, February 3, 2015

Material IO: Version 0.2 Is Coming Soon!

Version 0.1 of Material IO was just released and version 0.2 will be out very shortly, some of the new features are:
  • Being able to export single, all the materials on the selected object, or all of the materials in the scene at once.
  • Being able to import multiple materials
  • Hopefully, zipping and unzipping of folders will be added to save on space
  • Blender Internal materials should be supported, some testing just needs done to validate.

Monday, February 2, 2015

Material IO: The File Format

I just released my Material IO add-on which exports and imports a .bmat file type which is specific to this add-on. It means Blender material and I created it so that the script could be sure that it was getting a file that it could read and understand.

I was originally going to have it just be a plain text file, but then realized that it would take a lot of work to convert it back into a usable format. So I stumbled across XML and it looked very easy to use, which it is. Python has a built-in set of tools, called ElementTree, to work with XML. So then I had to work on a layout out for the file and this is what I ended up with:

You have the overall group which is always called "material", it has several attributes that let the script importing know which order to create the groups in, what images to load, the name of the material and then the other information is just there for if someone just wants to read the file.

Then within material you have all the different groups, the main node_tree is also counted as a group and is always called "main", within each group you have a element for nodes and one for links. Inside of those two you have the majority of the information. The script uses ast.literal_eval() extensively for converting those strings back into usable lists and tuples.

The .write of ElementTree writes it all as a single line which is basically impossible to read. So the add-on writes it out that way, then reads the file using xml.dom.minidom which has a method called toprettyxml() which formats all the text in the file as an easier to read, multi-lined, file. Which is then written back to the file location.

Material IO: Version 0.1

Material IO
Current Version: 0.1

How To Use:
  • Install addon
  • Go to Properties > Materials and have a material selected.
  • Then decide if you want to have images paths absolute, meaning they will only work if they are in the exact location on your hard drive, or relative, which means they will be packed into a folder. Ignore if no images in material.
  • Then select a file path, and click export.
  • You can then select the .bmat file and import it again where ever you want, in a different .blend file, or on a different computer.

Here is a look at the panel, the "Add Material To Object" option just automatically adds the material to the selected object whenever it is imported.

Sunday, February 1, 2015

Material IO: Update 6

The alpha version will be out this week, groups are working great, several problems with file names and loading images have been fixed. There is now an option to have all the images packed into a folder with the .bmat file so that you can send everything easily. Just several more areas to check for potential issues before I have people start using it. I might also try and make the files a little easier to read.

Friday, January 30, 2015

Material IO: Update 5

Big breakthrough, groups are now completely working, up to the maximum allowed levels. Node links and everything is being transferred, leaving only some testing for bugs before I release it. A couple things that I need to check for our what happens to images, do I want to allow them to be copied to a folder and then imported with the material? Something to think about.

Thursday, January 29, 2015

Material IO: Update 4

Some more advancements today for the Material IO addon. Basic groups are now supported, links and all. I am currently working out several bugs and then will continue farther in to get to the max that I am going to code for, which will be 5 nested groups, or a group in a group in a group in a group in a group. Anything beyond that I believe is unpractical and never really used, but it can be made bigger rather easily.

Tuesday, January 27, 2015

Material IO: Update 3

Some pretty major additions have been added in the last day, node links are now supported. So as long as there are no groups in the node_tree than everything works fine and you get the same material as you exported. The one exception being anything that has to be loaded or setup.

By this I mean, if you have an image loaded into the one .blend it won't be linked up in the other one. I might add support for packing files into a local folder, so images can be transferred with the .bmat file, but that is still to come. Also, things like UV maps and vertex groups will have to have the same name in the new location, otherwise they won't link up.

Groups are still not supported, although I have begun working on them, hopefully within the next few days I will be able to post an alpha version up here with at least most of the features working.

Monday, January 26, 2015

Evaluating Strings

As I have been working on my Material IO addon I realized that I would have to convert strings to back to their original, built-in types. I thought I was going to manually have to code this, but I came across this built-in function ast.literal_eval(string) which does it all for you.

You can give it a string like "[1, (4, 5, 6), 2, (0.5, 0.4, 0.5)]" and it will convert all of it to an actual list that can be indexed.


import ast
a = "[1, 2, (3, 4, 5)]"
b = ast.literal_eval(a)


<class 'str'>
<class 'list'>

Saturday, January 24, 2015

Material IO: Update 2

The addon has progressed a good bit today, importing of all nodes is now supported although groups are not yet. All data is being transferred between nodes, including .inputs, .outputs, and node specific ones like .operation, or .blend_type

Material IO: Update 1

Material IO has been coming along well. Basic importing is now supported and all Cycles nodes can be exported and imported although their attributes and links have not been set up yet.

I encountered several problems along the way:

  1. Some issues with the XML, I am new to XML so I didn't realize that you can't have spaces in attribute names and can't have certain symbols like < or > outside of a string. For some reason the <> where coming from the node.location part because they were vectors. So I had to convert all of them to tuples. The names just have to be changed from Material Name to Material_Name
  2. I was collecting node.type for each node and was then having to change that type into a string that could be used to create the node which gave several challenges because it could be done in several ways. I figured out though, that you can just get the node.bl_idname. Which allows you to use that string directly to create the new node on importation. 

Friday, January 23, 2015

Material IO

I have noticed in Blender how it is so hard to send materials from place to place. You can always send the whole .blend and then use append, but there are not really any import/export addons to help with this. So that is why I am writing Material IO, it will allow you to import and export node configurations from both Blender Internal and Cycles once completed.

How it works:

  1. It collects the data from all the nodes and stores that data in a combination of lists and dictionaries
  2. It also will work with groups within groups (up to 5 levels)
  3. It then writes out to a .bmat file (Blender material) in XML, which allows for easier importing

Issues so far:

  1. Two nodes information can't be exported, these are the RGB Curves and XYZ Vector Curves. This is because they have a lot of data that is read-only meaning it can't be set once the data is read from the file.
Release time frame:
Hopefully this will be out within the next month. There are a lot of nodes to catalog and get straight. So far only most of the Cycles nodes are ready, and the importing part hasn't even been started on, but I will update here as I go.

Friday, January 9, 2015

User Selecting Objects

So you may be wondering how to give a list of objects for a user to select from in your script. One of the ways of doing this is, if you have added a property to bpy.types.Object you can use layout.prop_search(data, property, search_data, search_property). The four arguments are the data in which the property is, the property to be searched for (also takes the name of the selected choice), the data to search in, and the property in the search_data to look for.

For example:

  1. bpy.types.Object.obj = StringProperty(name = "", default = "")
  2. ###inside of panel/operator###
  3. self.layout.prop_search(context.object, "obj", context.scene, "objects")

So this looks at the active object's property "obj" and then looks in context.scene.objects for that property. Once the user selects an object you can find its name by looking at "obj".

Wednesday, January 7, 2015

Curve Conversion 0.5 Is Out!

Curve Conversion 0.5 is out with minor changes that allow all connected mesh objects to be updated from the curve object just by click "Propagate Changes". You can download from the "Released Scripts & Themes" page.

Tuesday, January 6, 2015

Check Out The Photos/Examples Page!

Check out the Photos/Examples page, there are photos of models created by my scripts and several of my own project renders.

Example Of Curve Conversion!

The top one is the mesh object and the bottom one is the curve. This means that you can modeling something with a curve and then convert it over, but still maintaining the original and being able to quickly make changes to the curve and see those updates on the mesh.

Curve Conversion Updated!

Version 0.4 of Curve Conversion is up! This update is just bug fixes. Moving the mesh object would not work in some situations. This has all been fixed up.

Monday, January 5, 2015

Have You Checked Out Curve Conversion?

Curve Converter
Current Version: 0.3

How To Use:
  • Install addon
  • Add curve, set "Fill" to "Full", then adjust bevel depth and resolution till satisfied
  • Option 1: Add mesh object, go to panel (View 3D > Tools > Tools > Curve Conversion) and select curve object and then click "Convert/Update Mesh"
  • Option 2: Go to panel (View 3D > Tools > Tools > Curve Conversion) and click "Add Mesh Object"
  • Then just click update once you update the curve
  • "Respect Scale" copies the scale from the curve to the mesh object
  • If you have multiple curves selected then "Add Mesh Object" takes all those curves and makes them one object while "Add Multiple Objects" creates a separate object for each of them.

Welcome to Blending Jacob!

On this website I will be posting my ramblings in coding in Python as well as any other languages that I pick up as I go. I will post all my released scripts here as well as bits of code that I think will be useful. So have fun browsing!