Blender instances "patch" for the unofficial exporter

Blender (Export script developed by yoyoz; Integrated Plugin developed by JimStar)
User avatar
matej
Licensed Customer
Posts: 2083
Joined: Fri Jun 25, 2010 7:54 pm
Location: Slovenia

Hair strands are made out of segments, which are straight lines. A hair strand as a whole cannot be represented as an instance, because when you comb & grow them they take arbitrary shapes. But their segments could be represented as instances, the script would take segment coordinates and reconstruct each hair form its segments (which would be represented by a simple geometric primitive - like a triangle tube).

* coding this would require a lot of work and time
* all that huge amount of simple instances - several per actual hair strand (remember strands have lots of children too) would most likely have a huge impact on render speed, make it's usefulness dubious.
* considering this I don't think it's worth the effort

The easiest solution for us, is Octane to be able to render strands. :) (which, IIRC, its not possible to represent in a physically correct yada yada way...)
SW: Octane 3.05 | Linux Mint 18.1 64bit | Blender 2.78 HW: EVGA GTX 1070 | i5 2500K | 16GB RAM Drivers: 375.26
cgmo.net
User avatar
ROUBAL
Licensed Customer
Posts: 2199
Joined: Mon Jan 25, 2010 5:25 pm
Location: FRANCE
Contact:

Thanks matej, it confirms my thought and fears !
French Blender user - CPU : intel Quad QX9650 at 3GHz - 8GB of RAM - Windows 7 Pro 64 bits. Display GPU : GeForce GTX 480 (2 Samsung 2443BW-1920x1600 monitors). External GPUs : two EVGA GTX 580 3GB in a Cubix GPU-Xpander Pro 2. NVidia Driver : 368.22.
User avatar
vinz
Licensed Customer
Posts: 230
Joined: Fri Apr 09, 2010 5:00 pm
Location: France

Thanks for this clear answer, i was asking myself the same question.
So fur and hair in octane is not for tomorrow :evil:
:)
i7 8700k / 16Gib / GTX980Ti 6GiB / win10x64 1803 / Blender 2.78a / drivers 416.34 + Octane 4.0 Standalone / OctaneBlender
User avatar
radiant
Licensed Customer
Posts: 699
Joined: Mon Apr 05, 2010 12:00 pm
Location: Adelaide, Australia
Contact:

Any reason why this is happening?
Attachments
2.png
1.png
Win8 Pro 64bit ULT|Intel Core i7 3930K|3.20 GHz|32 GB RAM|GTX 590|UD5 2011 socket||2x TB HD||Master Cooler HAF X||Blender 2.6||Maya 2012||Octane|
User avatar
steveps3
Licensed Customer
Posts: 1118
Joined: Sat Aug 21, 2010 4:07 pm
Location: England

radiant wrote:Any reason why this is happening?
I had something very similar happen yesterday. I assume it is because the objects are not working off of the same origin. I was just going out when I spotted it so I didn't have time to investigate fully.
(HW) Intel i7 2600k, 16GB DDR3, MSI 560GTX ti (2GB) x 3
(SW) Octane (1.50) Blender (2.70) (exporter 2.02)
(OS) Windows 7(64)
User avatar
matej
Licensed Customer
Posts: 2083
Joined: Fri Jun 25, 2010 7:54 pm
Location: Slovenia

I suppose the world origin is at the emitter center? Your cone dupli object does not appear at world origin in Octane (but translated like in Blender). Either: you did not use the latest version of the script or you didnt have enabled "write dupli objects to file", when you exported the transforms. This latter is required if you translate the dupli object away from world origin, because it corrects this translation back (if you manually export the dupli object, then you must correct it yourself)

Your rotations are also off, please read the guidelines & limitations on the first page.
SW: Octane 3.05 | Linux Mint 18.1 64bit | Blender 2.78 HW: EVGA GTX 1070 | i5 2500K | 16GB RAM Drivers: 375.26
cgmo.net
User avatar
matej
Licensed Customer
Posts: 2083
Joined: Fri Jun 25, 2010 7:54 pm
Location: Slovenia

A few more thoughts about Blender strands & Octane instances.

The idea I talked about in my previous post on this subject (instantiated strand segments), would not be that great also because you usually want your hair to have a wider root and a thin tip. But you can do only affine transforms with Octane instances, so you cant "taper" an object. This is best explained with a picture:
strands-problem.jpg
A better solution for exporting strands would be to create the whole strand as geometry and then instantiate its children. If you have 1000 hairs with 100 children each, you would still save a lot of memory. Unfortunately there are two major problems that prevent this:

1.) Blender python API doesn't seem to expose the data needed for this (individual child transform). In the field of particles some things are still unfinished, it seems.

2.) Octane would need to have support for "scatter mesh groups". With the current implementation in the above example of 1000 parent hair strands, you would need 1000 scatter nodes to represent the whole system in Octane (which is clearly insane to do). If Octane would allow to export all the 1000 parent strands into one single mesh file, where each strand would get an ID, and then export the children transforms for all the parents into a single .csv file (again, assigning the ID to create a relation between the two), then it would be possible to match which child transforms apply to which mesh part in the mesh file and do the whole system with one scatter node.

tldr: currently its not possible to satisfactory instantiate hair strands.
SW: Octane 3.05 | Linux Mint 18.1 64bit | Blender 2.78 HW: EVGA GTX 1070 | i5 2500K | 16GB RAM Drivers: 375.26
cgmo.net
User avatar
face
Octane Plugin Developer
Posts: 3204
Joined: Sat Mar 06, 2010 2:10 pm
Location: Germany

I think the last transformation you can´t do with matrixes...

face
Win10 Pro, Driver 378.78, Softimage 2015SP2 & Octane 3.05 RC1,
64GB Ram, i7-6950X, GTX1080TI 11GB
http://vimeo.com/user2509578
User avatar
pixelrush
Licensed Customer
Posts: 1618
Joined: Mon Jan 11, 2010 7:11 pm
Location: Nelson, New Zealand

Is it absolutely necessary to be accurate with the geometry for something as fine as hairs I wonder? How about a curved line of overlapping micro spheres with progressive scaling or something? Dunno just an idea ;)
As long as it appears continuous and has a suitable material what's a few billion spheres between artists and the audience... :roll: Instances are relatively cheap after all.
i7-3820 @4.3Ghz | 24gb | Win7pro-64
GTS 250 display + 2 x GTX 780 cuda| driver 331.65
Octane v1.55
User avatar
matej
Licensed Customer
Posts: 2083
Joined: Fri Jun 25, 2010 7:54 pm
Location: Slovenia

pixelrush wrote:Is it absolutely necessary to be accurate with the geometry for something as fine as hairs I wonder? How about a curved line of overlapping micro spheres with progressive scaling or something? Dunno just an idea ;)
As long as it appears continuous and has a suitable material what's a few billion spheres between artists and the audience... :roll: Instances are relatively cheap after all.
It's not necessary to be exact, but with the spheres approach you would still need a good approximation, to not leave gaps that would lead to strange look. Considering that a filed of grass objects already noticeably kills render speed, we probably cant afford such approximations. Consider a female with long hair; one single strand could be easily composed of 1000 spheres == 1000 transforms, multiply that with 30.000 strands with 100 children each and we get trillions of instances. I don't think it's doable this way. Though, there are still things to be tested; like what has greater impact on render speed: a small number of instances with complex geometry or lots of instances with simple geometry.

But short fur / hair can already be satisfactory represented with objects.
SW: Octane 3.05 | Linux Mint 18.1 64bit | Blender 2.78 HW: EVGA GTX 1070 | i5 2500K | 16GB RAM Drivers: 375.26
cgmo.net
Post Reply

Return to “Blender”