# Kingfisher Quilling

**URL:** <https://discourse.mcneel.com/t/kingfisher-quilling/49436>\
**Category:** Gallery\
**Tags:** wow\
**Created:** [November 16, 2017, 6:11am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436 "2017-11-16T06:11:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [November 16, 2017, 6:11am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/1 "2017-11-16T06:11:36Z")

</div>

![quiling2](https://global.discourse-cdn.com/mcneel/original/3X/9/6/96cc22607efa007a9eeb00fe9ef999dd1c3a4ba6.jpg)  
Here a rendered of 3d geometry replicating work from Entagma “PROCEDURAL MODELING: QUILLING 06.11.2017 by Moritz”  
[http://www.entagma.com](http://www.entagma.com)

- Primary image of Kingfisher from  
[https://pixabay.com/p-2046453/?no\_redirect](https://pixabay.com/p-2046453/?no_redirect)
- Points for Voronoi diagram are generated using Kangaroo Circle Packing based on Image from Daniel Piker
- Voronoi cells are then smoothened and spiral are done like in Houdini Video
- Paper is thickened via a script I did in order to go fast, it thicken a polyline and extrude it to a mesh.
- Render in Rhino 6 via Cycle using Grasshopper to color mesh

Here is the script.  
[Quilling\_3d.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/6/5/659bb0fe1018cec2ce6556d0c44f92647f7ff078.gh) (821.0 KB)

1. First find an image. Here the kingfisher is from [https://pixabay.com/p-2046453/?no\_redirect](https://pixabay.com/p-2046453/?no_redirect)  
In order to generate the intended circle packing the image is transformed in grey scale. Play with contrast luminosity … For example I used this one and also another.  

2. Now use the color image in order to suppress polygon which have a color near the white. Beware when color is transformed to a point in GH it ranges goes from -1 to 1, not 0 to 254.

 ![Canvas at 13;34;56](https://global.discourse-cdn.com/mcneel/original/3X/d/9/d902eca356cdcb7ad075ea2dc0b7a0e3fbfe9794.png)

1. The polygons are then smothened  

2. The max circle inscribed in rectangle is searched, it outputs the radius and the center.  

3. Spirals are now made, you can choose the paper thickness and the percentage in length you want for the spiral.  

4. Spiral are then thickened via a script I made in order to limit the number of faces and fasten the script. Offset, loft curves are too slow and too heavy ☹ You can make paper thinner. You can play with Perlin noise parameters, see examples below with low noise, no noise, low scale and high noise.

---

<div class="post-metadata">

**Author:** ![nathanletwory](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathanletwory/32/482880_2.png) [@nathanletwory](https://discourse.mcneel.com/u/nathanletwory)\
**Post date:** [November 18, 2017, 5:43pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/2 "2017-11-18T17:43:53Z")

</div>

Very nice. Great to see the kingfisher implemented like that, and rendered with Raytraced. What was the render time for this, and on what hardware?

I like this one so much, it is now the wallpaper on my phone (:

---

<div class="post-metadata">

**Author:** ![Modeler3D](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/modeler3d/32/486828_2.png) [@Modeler3D](https://discourse.mcneel.com/u/Modeler3D)\
**Post date:** [November 18, 2017, 5:58pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/3 "2017-11-18T17:58:51Z")

</div>

Wow! 😀

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [November 18, 2017, 5:59pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/4 "2017-11-18T17:59:52Z")

</div>

Thanks.  
Raytraced without baking is cool, it tooks one hour. It seems a bit long, but I am not able to compare with Vray3 as it is not working yet on Rhino 6. It seems also that Cycles didn’t use all the machine power (on purpose of usability I imagine). I saved rimage file but I don’t know if it contains extra informations.  
I have that PC

> [@Holomark 2 Released!](https://discourse.mcneel.com/t/holomark-2-released/8040/672):
>
> Dell Precision M4700 Holomark 2 v2,2,03 Total Score: 27272 Total Runtime: 193.81 sec GPU scores: 18110 GPU\_01 - 481.90 fps - Cube 4 tests GPU\_02 - 21.70 fps - UDT Shape GPU\_03 - 54.60 fps - Wireframe GPU\_04 - 31.30 fps - Shaded GPU\_05 - 20.40 fps - Rendered GPU\_06 - 19.80 fps - Block Rendered GPU\_07 - 12 units Nurbs @ 5 fps in Wireframe GPU\_08 - 7 units Nurbs @ 5 fps in Shaded GPU\_09 - 17 units Nurbs @ 5 fps…

I think it is cool to have a good renderer in Rhino. I am happy with vray but the simple interaction between Cycles/Rhino and Grasshopper is a plus. Good job Nathan.

Render view with -ViewCaptureToClipboard is also good and very fast. Here 2000 passes with 2 types of paper thickness.

 ![quiling3](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/a/0/a01b3d15bb8b1950e45c6594157118da655b0945.jpg)  
 ![quiling4](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/1/8/1860256bd3933947c6e14fb977bd101bef4b0aad.jpg)

---

<div class="post-metadata">

**Author:** ![nathanletwory](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathanletwory/32/482880_2.png) [@nathanletwory](https://discourse.mcneel.com/u/nathanletwory)\
**Post date:** [November 18, 2017, 6:11pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/5 "2017-11-18T18:11:17Z")

</div>

Ah yes, if you used Cycles for Rhino (CfR) then the Cycles engine won’t be as fast. There is a severe loss of speed using the RenderWindow, but since CfR won’t be in Rhino 6 I won’t just yet look into why.

That said, the Raytraced display mode is the exact same engine, and indeed ViewCaptureToClipboard (and -File), will give about all the power Cycles.can give.

Anyway, awesome work on both the GH definition and the renders. Keep 'em coming! (:

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [November 18, 2017, 6:23pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/6 "2017-11-18T18:23:34Z")

</div>

For the first image I used the bue icon \_Render. “cycles for Rhino”.  
I am not sure to understand everything of your reply. So ViewCaptureToClipboard is also working with the raytraced mode ? I never tested that ! Is there some documentation that gives the pros and cons of different ways of rendering an image in Rhino ?

---

<div class="post-metadata">

**Author:** ![nathanletwory](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/nathanletwory/32/482880_2.png) [@nathanletwory](https://discourse.mcneel.com/u/nathanletwory)\
**Post date:** [November 18, 2017, 6:49pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/7 "2017-11-18T18:49:55Z")

</div>

The blue `_Render` button that starts `CfR` uses the exact same Cycles render engine as the view mode `Raytraced`. With regards to render quality there is no difference between `CfR` and `Raytraced` - the exact same engine, the exact same features.

There shouldn’t be a difference between the different ways to render, but `CfR` is just not working as well as it could. For Rhino 6 you’ll be using the `ViewCapture*` commands on the `Raytraced` view you wish to capture. You can specify larger resolution and more samples than the active viewport has, so you can do fast look-dev, then capture at resolution and sample count of your liking.

---

<div class="post-metadata">

**Author:** ![Jonish](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/jonish/32/474849_2.png) [@Jonish](https://discourse.mcneel.com/u/Jonish)\
**Post date:** [November 18, 2017, 9:15pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/8 "2017-11-18T21:15:46Z")

</div>

> [@nathanletwory](#):
>
> the exact same engine

Hey nathanletwory,

I think I missed something… Rendered view uses Rhino render, Raytraced uses Cycles for Rhino, but CfR won’t be in Rhino? Aaaaand… CfR / Raytraced uses GPU for rendering?

Thank you…  
Jonas

---

<div class="post-metadata">

**Author:** ![wim](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/wim/32/747482_2.png) [@wim](https://discourse.mcneel.com/u/wim)\
**Post date:** [November 18, 2017, 9:58pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/9 "2017-11-18T21:58:38Z")

</div>

As far as I understand:

> [@Jonish](#):
>
> Rendered view uses Rhino render

Yes.

> [@Jonish](#):
>
> Raytraced uses Cycles for Rhino

No, `Raytraced` uses the Cycles render engine.  
And CfR also uses the Cycles render engine.

> [@Jonish](#):
>
> CfR won’t be in Rhino?

Not in Rhino 6, no. But it will continue to be in WIPs - for Rhino 7.

> [@Jonish](#):
>
> Raytraced uses GPU for rendering?

It can. But you can also set it to use the CPU. See `Rhino Options > Cycles > Device Settings`.

---

<div class="post-metadata">

**Author:** ![yhxbarking](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/yhxbarking/32/483944_2.png) [@yhxbarking](https://discourse.mcneel.com/u/yhxbarking)\
**Post date:** [May 20, 2019, 4:24am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/10 "2019-05-20T04:24:22Z")

</div>

Hi @laurent_delrieu Thanks for sharing. Is it possible to have a rhino 5 version to share?

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [May 20, 2019, 8:02pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/11 "2019-05-20T20:02:39Z")

</div>

Hello,  
no it is not possible, some rework necessary with Kangaroo. Perphas Kangaroo 2 work on Rhino 5.  
Here a big image of the definition.

 ![quilling%20definition](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/1/0/10827d86118e45d71fb54be37799417edb7d412e.jpeg)  
The definition, I suppressed relay (all ??). For the multiplication you will have to search.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/1/b/1bf65e09fa0b3520b26cb66899321b10c6bd0436.png) [Quilling\_3d\_v3.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/0/5/05daffafa6921e5ef3960ffc0be7512304ef2796.gh) (820.6 KB)

---

<div class="post-metadata">

**Author:** ![yhxbarking](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/yhxbarking/32/483944_2.png) [@yhxbarking](https://discourse.mcneel.com/u/yhxbarking)\
**Post date:** [May 24, 2019, 3:23am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/12 "2019-05-24T03:23:50Z")

</div>

Hi @laurent_delrieu Thanks for sharing. I am trying to work with it on rh5.

 ![1](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/1/a/1a9eedd289a254d9eb1d926a55427dc70a2024d4.jpeg)  
but the import image component that converts color image to meshes causes the whole program collapsing, once which the image path has been synchronized. I wonder if this causes by the limitation of rh5, or I need to do some settings with the import image component.

[Quilling\_3d\_rh5\_test.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/5/f/5f6d6b95ae852c0332ad0c8a6d3a42776b478f5d.gh) (817.4 KB)

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [May 24, 2019, 4:58am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/13 "2019-05-24T04:58:08Z")

</div>

By default this component is making a mesh with a number of vertices same as the number of pixels. So if you input a big image it could lead to big mesh. Put Xand y at 200 or 300 for example.

---

<div class="post-metadata">

**Author:** ![yhxbarking](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/yhxbarking/32/483944_2.png) [@yhxbarking](https://discourse.mcneel.com/u/yhxbarking)\
**Post date:** [May 24, 2019, 6:43am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/14 "2019-05-24T06:43:01Z")

</div>

Hi @laurent_delrieu Thanks for your reply. It seem more likely the crash coming from the Mesh Eval component. Is there any other way the similar thing by using different component?  
[Quilling\_3d\_rh5\_test1.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/c/7/c7dff858077a34afd44dd214fe063b7a0146ab2c.gh) (1.0 MB)

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [May 24, 2019, 8:22am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/15 "2019-05-24T08:22:23Z")

</div>

There was a bug with mesh eval when there are no normals on mesh. So you have put normals on mesh.  
I thought this was updated. Do you have the last version ?

---

<div class="post-metadata">

**Author:** ![yhxbarking](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/yhxbarking/32/483944_2.png) [@yhxbarking](https://discourse.mcneel.com/u/yhxbarking)\
**Post date:** [May 24, 2019, 8:49am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/16 "2019-05-24T08:49:08Z")

</div>

I am using rh 5 RS 13 and grasshopper 0.9.76.0. I don’t have rh 6.

---

<div class="post-metadata">

**Author:** ![yhxbarking](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/yhxbarking/32/483944_2.png) [@yhxbarking](https://discourse.mcneel.com/u/yhxbarking)\
**Post date:** [May 25, 2019, 6:11am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/17 "2019-05-25T06:11:43Z")

</div>

Hi @laurent_delrieu Thanks for your suggestion. The Mesh Eval basically works now by adding deconstructing and constructing mesh component before it. But how to separate the spirals inside the Kingfisher.

 ![2](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/6/5/65484181a4d194e3c7c845896606a2e73e31a7ce.jpeg)

[Quilling\_3d\_rh5\_test1.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/4/7/47a9145de47d2f0ac910404968818ee67e4b2b21.gh) (998.9 KB)

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [May 25, 2019, 6:29am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/18 "2019-05-25T06:29:10Z")

</div>

Hello  
The suppress “Suppress white polygons” is doing that but you must put an image with white parts. You will see {1,1,1} it is the white in 3d space. Grasshopper converts color to {-1,-1,-1} {1,1,1} cube. So I just filter colors by distance here.  
You must link your Voronoi to the curve input

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/f/a/fa70bd74c59d3401d02a2f2bc4e0d49fe6f2a003.png)  
Depending on you color of backgroung, you will have to play with the color (not white here but grey) and distance  
 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/5/9/59951937c259e5b2b61dd79bf1dfdf85dc4678f8.png)

It still works,

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/9/c/9c7fc4b1711464ac87a6f6ccbc46c40be6055ff2.jpeg)  
You have to learn how to navigate in a definition and look what is working or not, if all geometry is at the good place …  
Use that  
 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/f/c/fc3114bb7743887f860ad94c97cac59f1ce10111.png)

---

<div class="post-metadata">

**Author:** ![yhxbarking](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/yhxbarking/32/483944_2.png) [@yhxbarking](https://discourse.mcneel.com/u/yhxbarking)\
**Post date:** [May 30, 2019, 7:31am UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/19 "2019-05-30T07:31:25Z")

</div>

Hi @laurent_delrieu

 ![4](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/2/7/273ef77015c38f10395b3984b8635fd094ee5303.jpeg)  
Thanks for your suggestion and tutorial. It really seems that the mesh eval does not work properly, which can not give the color value. I am just trying to solve this with converting to xyz - coordinate and extract the meshes manually. But in terms of the color, how can I get an average color value amount those colored vertexes in the poly mesh? [Quilling\_3d\_rh5\_test1.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/3/9/395346c41816253f3e7e5d76560915bd0983e5f2.gh) (1002.1 KB)  
the images I use  
 ![kingfisher_690x459](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/7/7/77873bd1aa7887f09b6d148c259a8119e9652e4f.jpeg) ![kingfisher_690x459Color](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/6/6/669f03fc2e1874cd5d31ba2f5cbef439a3788a2c.jpeg)

---

<div class="post-metadata">

**Author:** ![laurent\_delrieu](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/laurent_delrieu/32/601605_2.png) [@laurent\_delrieu](https://discourse.mcneel.com/u/laurent_delrieu)\
**Post date:** [May 31, 2019, 9:32pm UTC](https://discourse.mcneel.com/t/kingfisher-quilling/49436/20 "2019-05-31T21:32:18Z")

</div>

In order to palliate the mesh eval bug in Rh5, you could use that to have a color on a mesh.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/8/4/8427be4dfe7cf37e3a1d8c5fd3c1de5d6c9d32e1.png)  
The trick is to use the index of closest point, index is used to access the mesh vertex color.  
[color on mesh.gh](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/8/c/8ca06604fce1e4b3a9cf8a6619068e22359304cd.gh) (5.3 KB)

[Next page](https://discourse.mcneel.com/t/kingfisher-quilling/49436.md?page=2)
