Jump to content
How to Install Plugins ×

ScrollGeneratorEffect plugin v1.0.0


Recommended Posts

From wikipedia, under Scroll (art): "The scroll in art is an element of ornament and graphic design featuring spirals and rolling incomplete circle motifs, some of which resemble the edge-on view of a book or document in scroll form, though many types are plant-scrolls, which loosely represent plant forms such as vines, with leaves or flowers attached. Scrollwork is a term for some forms of decoration dominated by spiralling scrolls, today used in popular language for two-dimensional decorative flourishes and arabesques of all kinds, especially those with circular or spiralling shapes."

 

This plugin will generate a variety of scroll ornament patterns any time you feel a craving for some sprawling spirals coming on.

 

ScrollGenerator.zip contains the ScrollGenerator.DLL and (CodeLab-generated) Install_ScrollGenerator.bat that will install the plugin for you.

After installation, look for Effects > Render > Scroll Ornament

 

If you are interested, the code for the plugin can be found at:
https://github.com/annayudovin/PDN-ScrollGeneratorPlugin

 

Here are some screenshots:

 

demo.png

style.png

style2.png

random.png

color.png

more.png

ScrollGenerator.zip

  • Like 7
  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

Congrats @AnneYusual You learn quick. You even learned the coding for tabs. Thank you for the source code as well. Another plugin that was just released included the source code as well. I hope you are starting a trend.  I played with it a bit, but when I try to change the color my pattern changes.

 

Is this intended behavior?  (The story continues.....) :)

 

 

PaintNetSignature.png.6bca4e07f5d738b2436f83d0ce1b876f.png

Link to comment
Share on other sites

@AnneYusual  This is very cool. Thank you for turning this into a plugin!  😄 👍  As @AndrewDavid said above, the pattern changes when changing colors. It seems the placement of the pattern flips all over the canvas.  It actually stopped this behavior for a little while, then started again; very strange...I hope you get it sorted. I will definitely be using this!

 

Scroll%20Generator_splinter.png  Scroll%20Generator_trailblur.png

  • Like 2
Link to comment
Share on other sites

Many thanks for sharing! - great fun to use.
You're clearly an accomplished programmer, so, if you have the time and inclination...
1. Would it be possible to adapt your algorithm to use logarithmic spirals?
2. Have you considered other branching patterns eg. L-system.(tree branching - many options)
3. Really not meaning to self-promote but please consider the ideas in these two effects of mine, which perhaps could suggest relevant ideas?
(If I had the programming ability and time I would explore this avenue further but would love someone more competent to put the work in 😉)

Flourish, Dryad

 

Red ochre Plugin pack.............. Diabolical Drawings ................Real Paintings

 

PdnForumSig2.jpg

Link to comment
Share on other sites

Sorry for the extended absence, all: after finally publishing the plugin I returned the Windows laptop I was borrowing for this, and got down to wrangling a workable linux install onto my old one - so not much uptime in the past week.

 

To answer the burning question on several people's lips:

On 10/14/2023 at 2:04 PM, lynxster4 said:

It seems the placement of the pattern flips all over the canvas.  It actually stopped this behavior for a little while, then started again; very strange...I hope you get it sorted.

This will happen if you have any options set to random on the "Random" tab (besides color - that one only changes the colors). It's both intended behavior and not: any time ANY of the controls change, the entire ornament is re-generated, and, if any of the parameters are random, then new random values will be picked. I can't change this behavior so long as I stick with using the standard IndirectUI interface - and given how MANY controls there are, it's by far the better option than trying to cobble together standard Winforms controls that come with VisualStudio - that's basically what I did on the standalone app - which DOES NOT generate anything until you've finished playing with all the controls and hit the "Preview" button. I kinda feel like there are upsides and downsides to both ways of doing it - and I may change the standalone app to do a little of both in the future. As far as the plugin is concerned, there's not much I can do there, sorry.

 

As for "flipping all over the screen" - I know what you mean, but it's not QUITE what's happening, which is also why it would be hard to "fix" - actually, the "origin" curl is always centered in the rectangle of the canvas, but from there, the direction of "growth" is either very random (if the options are random), or follows specific growth rules inherent in the ornament generation. I CAN change the rules, but not for one specific option: the growth algorithm is global, across all option permutations. But ultimately, that means new spirals will only be added to existing ones in specific order and in specific places.

 

If you want to get the hang of how this thing behaves, and DON'T feel like reading through all the code (which is pretty boring and not necessarily obvious anyway), you can try decreasing the number of nodes and de-selecting all the random options. In the standalone app, there are even debug options that generate a log of what's going on AND display the order of curl growth for you (these are cleverly hidden in plain sight as two small/low contrast links next to the output window).

 

On 10/15/2023 at 12:32 AM, Red ochre said:

1. Would it be possible to adapt your algorithm to use logarithmic spirals?

Actually, that was the FIRST thing I wanted to do - well, actually, I was hoping to go with Fibonacci spirals originally, but logarithmic ones are pretty too, more so than Archimedes anyway, which is what I'm using. As far as trying to adapt my algorithm to it, I doubt that would work... Here's why:

 

The reason this ornament looks pretty is that the spirals are all packed very closely together -- spread them farther apart, and it quickly loses visual appeal. However, geometrically, spirals are complicated beasts -- they aren't even symmetrical. So packing them closely in a hands-off, algorithmic manner, is much more complicated than I expected. Actually, even packing circles is a more complex task than I first thought, when you consider the geometry of the process. The only reason I was able to get this thing to work was to find an Archimedes spiral variation that approximates a circle VERY closely, then create an algorithm that grows a tree of circles that are packed closely in some directions and NOT others, and avoid collisions with each other and the edges of the container. I further adjusted the collision DETECTION based on the specific features of the spirals (their outer envelope, if you will), but the collision RESOLUTION mechanism is based entirely around the idea of fitting CIRCLES (which, given how much I apparently suck at geometry, was already pretty hard to get right -- and "right" in this case is measured by whether the result still looks good).

 

But that's essentially the problem with using any less "circular" species of spirals -- I'm not saying it can't be done, mind you, just saying I have no idea how to go about it, and I don't think my algorithm would work. You are certainly welcome to tweak it to your heart's content and find out. I don't think it's anything mathematically revolutional anyway, so no worries about hijacking some discovery.

On 10/15/2023 at 12:32 AM, Red ochre said:

2. Have you considered other branching patterns eg. L-system.(tree branching - many options)

I'm not familiar with that one, which is why I haven't considered it. Maybe I should add "yet" to it -- I might give it a try at some later point. I certainly feel like the order of growth (which is a BFS tree, if you were wondering) leaves much to be desired, but when I played with variations (during early stages of development, anyway), they didn't look any better, so I dropped the idea. I'm definitely not going to get to it soon though -- other, more pressing things on my plate. Again, this is open source, you are welcome to hack it to bits -- I certainly won't be offended!

 

On 10/15/2023 at 12:32 AM, Red ochre said:

Really not meaning to self-promote but please consider the ideas in these two effects of mine, which perhaps could suggest relevant ideas?

Also on the backburner, but I feel like it's "unfinished business", so it might get done sooner: I developed most of the "growth" logic for this in javascript (p5.js to be precise, if you want to check it out - fun stuff). I kinda feel like it's a lot more rapid-prototyping friendly. So it was my original intention to translate the thing back into javascript when it was finished -- but it's gotten a great deal more complex as I worked on it, so the translation no longer seems like such a trivial matter. The reason I bring it up though -- way easier to screw around with this in p5. If you really care, I can give you my "last working prototype" to play with, with the warning that it's necessarily clean or pretty... But it IS way less annoying in javascript than C#.

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...