PDA

View Full Version : Doing an Ivy generator in maxscript like the one of Thomas Luft.


BebeteLANUITE
07-10-2007, 08:10 PM
Hello Guys !!

I think you know this very good program to generate Ivy :
Ivy Generator by Thomas Luft (http://graphics.uni-konstanz.de/%7Eluft/ivy_generator/)

So, i'am learning maxscript and do some small scripts. I wanna do a script to do the same thing than the "Ivy Generator" : Generate a real look ivy with some parameters to improve the rendering by decrease the number of polygons or leafs.

I wanna make an UI to generate, modify and (possibly) animate the ivy's growing.
And of course distribuate it freely !! :)

I need your help to do this script because i think my knowledge of maxscript it's not enough tought to make this script alone. But i think it's a good exercise to learn maxscript.
I thing to make it with maxscript because i don't know C language. (C plug for max after learning it :) )

I think to use the script by this way.
1 - I launch the script UI and clic on a "Put Root Beginning" button.
2 - I put a dummy object somewhere on an object normal (the dummy is automatically bond and align on objects normals like and autogrid creating).
3 - select an age for the ivy and clic "Do Growing Ivy". (We see the ivy growing or just an progress bar on the UI show the generate progress.)
4 - After we can modify the ivy (number of leaf, complexity of the branches, and other...)


I have a way to generate the ivy.
I think to use splines to make the branches and basic four points polygons for the leafs. To save memory, i thing to generate 10 or more differents leafs and instance them to make the foliage of the ivy.

For the branches, my splines must grow like a real ivy by searching their ways. I think to create a spline vertex with maxscript and create an other in a radius around the first point in alignment of the current normal.
If the created point touch an other normal the point must follow the alignement of the touching normal and continue his way.
I hope by this way, the spline will follow thouching normals like ivy branches climb on walls and surfaces.
If the splines left a normal the gravity make it goes down if after a distance it doesn't find an other surface the branch stop growing. If it find one it continue to growing.
By randoming, some child branches be created at a moment of the growing of the parent branches.
By randoming, some branches stop to growing after a certain running distance.

The position of the leafs will be generate during growing by putting a point on the branches. After growing, we've got a lot of point to put the leafs.
And we can modify the number of leaf by randomly choosing a number of point and stick leafs on them or delete leafs stick on them.

I do an UI for the script and post it to show you.

Do you have some advices about to make the script or to control the flow ?

Thank a lot for your interest ! :bounce:

BebeteLANUITE
07-13-2007, 02:33 AM
Hello guys !

I continue the ivy's maxscript.
I searched a way to do a root randomly searching his way.

This this the results :
http://www.alienstrabism.com/forforum/ivy_spawner/root_way_test.jpg

The root begin at the bottom and creep up by randomly searching his way.

the code :

try(delete $root*) catch()
try(delete $Ref*) catch()

For a = 1 to 4 do --to create several roots
(

global objColor = random white orange
global ObjectArray = #()
box wirecolor:objcolor width:10 length:10 height:10 name:"Ref_1"
Append ObjectArray $Ref_1

For i = 2 to 200 do
(
--seed (1425+i)
Radius_distance = 30.0
RandX = random Radius_distance (0-Radius_distance) --make the Radius_distance negative
RandZ = random Radius_distance 0.0
if RandX < 0 then int_RandX = (-1*RandX) else int_RandX = RandX
--trigo--
YPos = (sqrt (Rayon^2 - (int_RandX^2)))

Segname = "Ref_"+(i as string)
Current_Obj = box wirecolor:objcolor width:10 length:10 height:10 name:Segname
index = i-1
in coordsys ObjectArray[index] Current_Obj.pos = [RandX,YPos,0]

--Current_Obj.pos.z = RandZ
append ObjectArray Current_Obj

-- To orient objects--
Distancebetween = distance ObjectArray[index] ObjectArray[i]
--trigo--
global AngleDegrees = (acos (YPos/Distancebetween))
If RandX < 0 do rotate Current_Obj (EulerAngles 0 0 AngleDegrees)
If RandX > 0 do rotate Current_Obj (EulerAngles 0 0 (0-AngleDegrees))
--End orient objects--

)--end for

rootline = line name:"Root" wirecolor:Objcolor
addnewspline rootline

for o = 1 to ObjectArray.count do
(
CurrentObj = ObjectArray[o]
addKnot rootline 1 #smooth #curve CurrentObj.pos
rootline.name = "Root_"+(a as string)
)--end for

updateShape rootline

--delete Ref, convert to comments to see the reference objects --
Delete $Ref_*

)--end for


The script create a box object at a point (for this test at world origin) and randomly create an other on a half circle perimeter around the first one. After the script turn the second object to make his local -Y axis point to the first one.
And make it for all objects.

The script don't work exactly as i want but the result is good, i think.
I loose my mind, in align the created object to the previous one.

If you have a solution to improve my code or simplify it, tell me it ! :bounce:

mustan9
07-13-2007, 08:07 PM
I've always wanted to do a script like this. That Ivy Generator link was very cool thanks for sharing that.

I would like to help with your script.

BebeteLANUITE
07-14-2007, 12:55 AM
Hello mustan9 !

If you want to help me. That's Great.
I'am happy to get help on this script.
Thank you.

This is what i can do with the actual script :
http://www.alienstrabism.com/forforum/ivy_spawner/root_way_testb.jpg

I improve my old code.
You can copy this chunk of code and analyse it to understand the way i take.
I don't know if it's the better but i'am testing it.

try(delete $root*) catch()
try(delete $Ref*) catch()

For a = 1 to 20 do --to create several roots
(

global objColor = random white orange
global ObjectArray = #()
FirstBox = box wirecolor:objcolor width:10 length:10 height:10 name:"Ref_1" --pos:$dummy01.pos
-- if you create a dummy you can use this chunk of code "pos:$dummy01.pos" to place a beginning point.

RandRotValue = Random 0 360
Rotate FirstBox (EulerAngles 0 0 RandRotValue)
Append ObjectArray FirstBox

For i = 2 to 100 do
(
--seed (1425+i)
Radius_Distance = 30.0
Radius_Range = Random 20 40 --Lower value of second argument make Root more straight. The minimum range is 20. You can change it.
--Radius_Size = 120

Radius_Middle = Radius_Range/2
RandRotation = random 0 Radius_Range
RandZ = random Radius_distance 0.0

Previous_Obj = ObjectArray[(i-1)]
SegName = "Ref_"+(i as string)
Current_Obj = copy Previous_Obj
Current_Obj.wirecolor = objcolor
Current_Obj.Name = SegName

in coordsys Previous_Obj Current_Obj.pos = [0,Radius_Distance,0]
Current_Obj.parent = Previous_Obj

Current_Obj.pos.z = RandZ
append ObjectArray Current_Obj

rotate Previous_Obj (eulerangles 0 0 (0-Radius_Middle))

rotate Previous_Obj (eulerangles 0 0 RandRotation)

)--end for

If 2 == 2 do -- to allow or not the spline tracing code.
(
rootline = line name:"Root" wirecolor:Objcolor
addnewspline rootline

for o = 1 to ObjectArray.count do
(
CurrentObj = ObjectArray[o]
addKnot rootline 1 #smooth #Curve CurrentObj.pos
rootline.name = "Root_"+(a as string)
)--end for

updateShape rootline
)--end if

--delete Ref, convert to comments to see the reference objects --
Delete $Ref_*

RedrawViews()

)--end for


At this time, my script works like that :
A reference object is created (a cube in this case. I call it "Ref_1").
An other is created too (Call it "Ref_2") and randomly placed on a perimeter around "Ref_1". The "Ref_3" is created and randomly placed on a perimeter around "Ref_2" and so on for all "Ref_".
After the script create a line that join all "Ref_".
The purpose of that is to have a randomly searching way line.

I search a way to have the same result (a randomly searching way line) but without using the "Ref_" objects. Maybe use spline knots but i don't know if knots can have an orientation or a rotation.
If you have an idea to do that. Tell me it !! ;)

I search too a way to make the "Ref_" creep and climb on object's surface on it's way. I think to use a Autogrid-like script to make the "Ref_" creep or climb on surface.
Do you have a way to do it ?

I try to make the script create branches on the main root

mustan9
07-14-2007, 04:55 PM
That is an interesting approach. You are using a chain of objects to figure out your points.

It would be easier and faster to just do the math. Using vectors to plot the direction of the vines. This way we could include forces to direct the vines were we would like them to grow.

I'll try to modify the code.

mustan9
07-14-2007, 08:59 PM
Ok, my first quick very rough script. I'll do some more on it later.

BebeteLANUITE
07-14-2007, 10:57 PM
Hello mustan9 !

Your code is pretty cool :)

I analyse it to understand the way you take.

I think i find a way to make vines grow from the main vine.
When the main vine is grew. The script can randomly select a number of knots of the spline to make the starting points for the Child Vines. They grow like the main one but from the main one. After the script add them like spline in the Main One.

We can use the same function to grew vine. So we can call this function to grow each Child-vines.

What do you think about this idea ?

48design
07-15-2007, 09:17 AM
hey,

that would be very cool to have such an ivy generator inside of max!
i thought of making such a script, too, but the time is the problem!

if you need someone to make a user-interface, perhaps i could do that!

bye,
nomed

scrimski
07-15-2007, 09:44 AM
This is going to be interesting. Subscribed.

RustyKnight
07-15-2007, 11:40 AM
I honsetly can't believe you are attempting this...but I do have to join the cheer squad on this one!

I look forward you seeing more of you ideas as they come!

Shane

BebeteLANUITE
07-15-2007, 07:16 PM
Hello guys !

I'am happy that you want to help us.
Thanks a lot. ;)

Nomed :
I already begin the user interface. But if you want to finish it, you are welcome :)
You can find the beginning interface here :
is_interface.rar (http://www.alienstrabism.com/forforum/ivy_spawner/is_interface.rar)

I think working with Three rollouts : one to create the ivy, one to have informations about the created ivy (polygons count, number of leafs, etc...) and one to modify it (reduce/increase number of leafs, complexity of the vines, etc...)

I wanna include an other rollout to animate the growing of the ivy. In this one, we can choose the start and end frame number and a button to perform the animation.

I let you choose some parameters we can modify to manipulate the ivy.
Thank for your help ;)


RustyKnight :
I'am happy to have your help.
If you can see to find a way to make the vines climb on objects. I think we must use normal direction or if you can see a way to animate a spline to make it grow. I test something that can be works.
In fact. we have the growed vine and the script take the last knot and move it to the pos of the previous one. After The script takes the both and move them to the knot before them and so on. It create a key frame for all knot and reverse the animation.


mustan9 :
I understand, i think, the way you take for the script. your code is efficiently and more fast that mine. I implement your code in the main one and work on the child-vines script.
I'll copy the comments-head of your code in the main one with name of all guys that works on it. If your are agree with that ;)


I stay on air to see somes scripts ;)
Thanks for your help.

RustyKnight
07-15-2007, 11:53 PM
Hi all!

Just a very quick reply...working on something else at the mo...

Making the spline grow about an object may be eaiser then I firts thought. I recall a script in the MaxScript Essentials book from autodesk that constrained one object to the surface of another. All bit via a mouse callback, but I think the basic principle might be appliable. When I have some more time, I'll dig the code out and have a look at it

Shane

mustan9
07-16-2007, 02:33 PM
Hi guys,

We need to get organized! We'll have to split the script into sections so that people can work on different parts at the same time. I have to go out for a morning meeting, but when I have time tonight I'll work on merging all the modifications together.

@BebeteLANUITE - I haven't tried your update, but I'm excited to see your GUI. I also created a simple GUI, but it's not very special. I'll post another update.

This new script adds a GUI, and some additional parameters.

I have given this process some more thought, and concluded that the ivy generator needs to operate like a particle system. With the growth, collision, and gravity all acting like foces on particles. The new branches are child particles that spawn from the parent branches.

If we treat this like a particle system then I think we'll have more control.

See the attached.

mustan9
07-16-2007, 02:35 PM
Nomed :
I already begin the user interface. But if you want to finish it, you are welcome :)
You can find the beginning interface here :
is_interface.rar (http://www.alienstrabism.com/forforum/ivy_spawner/is_interface.rar)

That's a better layed out interface then mine. :)

I think we need to keep the interface, and the generator code in different structures. This will allow us to modify one, without effect the other. Right now I have the IvyGUI structure in the same file, but it should be moved to another file.

I think we also need a load and run script file. That will load, and execute the different MS files for the Ivy generator. Instead of keeping everything in one large file.

Understand?

rdg
07-16-2007, 02:48 PM
Cool stuff you are developing here!

Georg

BebeteLANUITE
07-16-2007, 11:53 PM
Hello guys !!

All of that is very exciting ! :)

Mustan9 :
I love the idea to use vines like a particle system. At the beginning, i tought to use a PFlow to generate some particles and trace spline with them. But the final user needed to have an additionnal plugin to use the script. I forgot this idea.
To make some separates files. I'am agree with that. You have more experience than me in coding (Lost in space :) ). I trust in you. I think it's a good way too.
I think there is something like "include" in maxscript to do that.


But have some parameters for the creation rollout like :
- Leafs Number Limit.
(To avoid a memory crash if the user knows is system)
- Number of leafs References.
(The script can generate a number of base leafs to distribuate them on the ivy's branches. In this way we can have diversity in intanced leafs without kill memory.)
- Age of the Ivy.
(This parameters defines the step size of the Ivy)
- A random seed
(To make the creation stable, if the user want to make is Ivy grow more but keep his shape.)
- Gravity. (You already have it in your code)
- Collision distance. (From normals, i think.)
- Rate of Main Vines. (I think it's the primary slider in your GUI)
- Rate of Child-vines. (I think it's the Branches slider in your GUI)


For the modifier rollout :
- Number of leafs.
- Number of leafs References.
(If the user wants to modify the number of reference leafs to save or kill his memory :) )
- A button to apply the number of leafs.
- Sides of the vines (It's a spline parameter)
- Interpolation of the vines (It's a spline parameter too)
(Maybe we can make this both parameters (Sides and Interpolation) in one call "Vine Complexity".)
- A button to Apply Vines modifiyings


Animate Rollout :
- Start Frame.
- End Frame.
- A button to perform animation.
- A button to Remove animation.
(The same thing that select all keys but the last a press delete. But a button is better :) )

What do you think about the parameters ?
If you see one more or less tell me it.

mustan9
07-17-2007, 12:05 AM
I think we should work with density rather then fixed numbers. So if you have a leaf density of 100% then there will be a leaf at every spline knot, and if it's 50% then every other spline knot. We should also have leaf variance so that the leafs show up at more random locations.

We would also need leaf texture, leaf color, leaf scale variance (which is as you put it, leaf age).

We should allow the user to pick a group set of objects to act as the leafs. Then place cloned instances of those leafs on the branches.

I have been thinking of the geometry for the branches, and would like to generate the meshes via MaxScript then to create renderable splines. I'd also like to give the user the option to animate the growth of the ivy.

Here is a reference for a plant growing script I found. We could do something like that.

http://www.pxfactory.eu/scripts/grow/grow.html

dellis
07-17-2007, 03:17 PM
I am by no means a scripter at all, so this might be a useless suggestion...if it is...disregard. When i first thought of modeling ivy i wanted to maintain that look of randomness to the growth so my approach was something like this:

-Make a plane object with only one width segment and 4 length. (can be any size)
-then i converted to an editable poly.
-i then drew a bunch of natural looking splines varying in height as well as length.
-then i selected my editable poly, went into polygon mode and selected a poly.
-with the poly selected i used the extrude along spline. this gives you all kinds of options...taper, twist, segments etc.
-then once the first branch was created i would select another poly somewhere up the first branch and repeat the process to make offshoot branches with the other splines.

So if i could script at all i would make a base object that i could randomly select polygons either by the user or the script and have them grow based on a set of splines(either pre-made by the script or the user) for the first level. Then maybe you could read in all the polygons into an array after the first level is made and select some polygons randomly by height on the z-axis. Then you could make those grow based on another group of splines which would produce a secondary offshoot of branches. From there it would just be iterating through the same process...

Does this make any sense at all? I can;t wait to see what you guys come up with....i wish you guys luck!

mustan9
07-17-2007, 03:59 PM
Does this make any sense at all? I can;t wait to see what you guys come up with....i wish you guys luck!

It does make sense.

There are two stages to the ivy generator (as I see it in my head). First is the growth stage where splines are emitted from the root. The grow up surfaces or in the air, and have forces acting on them (such as gravity). The second stage is the mesh generation stage. Where we must create the geometry give the splines as a reference.

We might create the geometry vertex by vertex, or we could do an approach like yours. Either case, we'll have to test all these when the time comes. I think creating the geometry is going to be the harder then growing the splines.

BebeteLANUITE
07-17-2007, 08:45 PM
dellis and Mustan9 :
I thought to use the mesh generated by the spline and convert it into editable poly or mesh.
I think about that because i don't know very well how to create mesh in maxscript.
But if we want to animate it, i think generate the mesh is the better way to make manipulation of it for animation be easy for the script. Certainly to know where we are in the mesh.

Mustan9 :
I thought about the same thing allow user to instance and object on the branches. In this case he can make cars grow on them. I think to generate some leafs like references leafs. The script just have to replace them and redistribute them on the branches.
But i think we need to do rollout for that, even with a listbox where the user can put objects to distribute. For allow user to do that i think we have to solve a lot of technical problems, i think, for example, about groups. We must to copy and act only on the group.
So Copy it, open it, move it, scale it and close it. That's a challenge :)

I take the job on the texture. I love texturing :). I know someone who have a great ivy on his house. I think to go see him and take some photography.
on www.sxc.hu (http://www.sxc.hu), there are some reference photographies too.
I can work on finding best values of materials for rendering under Scanline, MR and VRay. if we decide to allow user to generate standard, MR or Vray materials for the leafs and the branches. We can just generate Standard Mtl wich be renderable under the three renderers.

I think also about dead leafs. The living leafs young (bright green) or adult (green) are flatted curved (i invent words :)) and need a basic four corners face.
But the dead leafs (brown) are rolled. i think, we have to generate some rolled mesh for them because the four corners face won't be enough to make the roll.
I'll search for some photographies to show you.

i see the grow script. That's the best way to make animation for the branches, i think.
So the script doesn't work with me but i understand the way it works.
I think too we must trace the branches and generate the mesh around. We can make a simple 4 corners face and extrude it along the spline or we possibly use the vector tracing you make to directly extrude the face.

mustan9
07-17-2007, 09:56 PM
I think to go see him and take some photography.

That would be cool. I haven't actually seen Ivy in the real world.

We can make a simple 4 corners face and extrude it along the spline or we possibly use the vector tracing you make to directly extrude the face.

I agree. This is what I was thinking.

BebeteLANUITE
07-18-2007, 01:53 AM
Hello Mathew,

I make some improvements on the UI with some scripted interact between UI elements.
IS_Interfaceb.rar (http://www.alienstrabism.com/customscripts/ivy_spawner/is_interfaceb.rar)

I'am not sure for the ergonomy of the "Ivy leafs replacer" rollout.
I think about a listbox with the number of leaf references in the scene.
Imagine we have 8 Leaf references and in the listbox we see the 8 references names with the kinds of leaf they are.

For example, we see this in the listbox

"Ref_YngLeaf_01 / Type: Young Leaf"
"Ref_YngLeaf_02 / Type: Young Leaf"
"Ref_AdltLeaf_03 / Type: Adult Leaf"
"Ref_AdltLeaf_04 / Type: Adult Leaf"
"Ref_OldLeaf_05 / Type: Old Leaf"
"Ref_OldLeaf_06 / Type: Old Leaf"

we have Two buttons under le listbox with this captions:
"Pick Object for this Leaf"
"Pick Object for all Leafs"

We can select a reference in the listbox and clic on "Pick Object for this Leaf".
We pick an object in the scene and this objects replace the selected reference and of course all of it's instances on the ivy.

The list box become this :

"Box01 / Type: Young Leaf"
"Teapot02 / Type: Young Leaf"
"Ref_AdltLeaf_03 / Type: Adult Leaf"
"Ref_AdltLeaf_04 / Type: Adult Leaf"
"Audi_A4 / Type: Old Leaf"
"Ref_OldLeaf_06 / Type: Old Leaf"

We can clic on "Pick Object for all Leafs" and select an object which replace all leaf references. In other word it become the main reference.

I think to put a progress bar under the buttons to see the performing of the replacement.
The replacement begin after picking the object. if the user have a big ivy this may take several minutes. A progressing bar tell to the user "be patient, i'am performing your desires."

What do you think about it ?
If you think about some parameters to put into the interface. Tell me ;)

mustan9
07-18-2007, 01:41 PM
Hi buddy,

Thanks for the update. I'll intergrate the new GUI with the Ivy generator.

I have some questions for you. Can you explain how the leaf age works? What would the ivy plant look like if the leafs were 12 months old?

mustan9
07-18-2007, 10:41 PM
I like the new interface. Looks very professional! :thumbsup:

I've attached a new file for the interface, but doesn't have the old ivy generator function in it. I'm hoping to add that tonight.

For the "Ivy Modifier" rollout, I don't understand what the difference is between Young/Adult/Old, could you explain?

I think also it won't be possible to perform modifications to the ivy after it's been grown. I could be wrong, but it might add a lot of extra work.

But it's starting to look good!

mustan9
07-18-2007, 10:43 PM
I think to put a progress bar under the buttons to see the performing of the replacement.
The replacement begin after picking the object. if the user have a big ivy this may take several minutes. A progressing bar tell to the user "be patient, i'am performing your desires."

I prefer to use the progress bar that comes with MaxScript. It's displayed at the bottom of the Max user interface, and allows the user to click a cancel button. Then while the script is running we can check if the user aborted the current operation.

BebeteLANUITE
07-18-2007, 11:21 PM
Hello Mathew !

I'am totally agree with the using of the max progressbar. That's ok for me.
So we use it for all processings of the script ?
If yes we need to remove progressbar from the actual script.

For Age of the Ivy. I thought about the architecture simulation graphist. I don't know how to make the ivy accelered-time growing in the viewport. So i think about age. I know an ivy can recover a wall of 120m² in one year. When the graphist put the root anchor on his house and type 24 month the script calculate the step for growing branches to have the best evaluation of surface recovering by the ivy.
I don't know if my explaination is very clear.

The difference between Young/Adult/Old, it's the size and the colour of the leafs.
Young leaf is clear green and the smallest size. Adult leaf is Green and greater size. Old leaf is brown and rolled. I think some users don't wanna use Old leafs to have an aesthetic living ivy without dead leafs. But some user who make ruins of a medevial castle in the night will use only dead leafs :).
I think we must use some sizes for leafs because from the beginning to the end of the branches the leaf become smaller.

I'am learning about Vectors. I understand a lot about them. This help me to write the branches growing.

If you are agree, i'll do the job on the materials for leafs and branches.
What do you think about allow the script to generate Mental Ray, Vray and standard materials ?
User gonna select one of renderer to have the best mat or we can just generate standard mat.

Hope, i answer your question. :)

mustan9
07-19-2007, 12:49 AM
For Age of the Ivy. I thought about the architecture simulation graphist. I don't know how to make the ivy accelered-time growing in the viewport. So i think about age. I know an ivy can recover a wall of 120m² in one year. When the graphist put the root anchor on his house and type 24 month the script calculate the step for growing branches to have the best evaluation of surface recovering by the ivy.
I don't know if my explaination is very clear.

Oh! I understand you now.

I would prefer to keep it simple, and just ask the user for max branch length, and max length of child branches. So it the want the ivy to grow for 100 meters, then they can define a max length of 100 meters for branches from the root.

The difference between Young/Adult/Old, it's the size and the colour of the leafs.
Young leaf is clear green and the smallest size. Adult leaf is Green and greater size. Old leaf is brown and rolled. I think some users don't wanna use Old leafs to have an aesthetic living ivy without dead leafs. But some user who make ruins of a medevial castle in the night will use only dead leafs :).

This should be up to the artist to define. Since they will select the source objects that will be instanced as leafs.

I think we must use some sizes for leafs because from the beginning to the end of the branches the leaf become smaller.

Yes, I agree.

If you are agree, i'll do the job on the materials for leafs and branches.What do you think about allow the script to generate Mental Ray, Vray and standard materials ?

We could auto-create a new Standard material, and assign it to the leafs, or allow the user to create their own and provide a reference to that material. Both options should work fine. It should be able to work with any render engine.

Hope, i answer your question. :)

Yes you did.

On another topic. I would like to include some new features. The ability to control the orbit of the branches around objects. So that they don't just grow straight up or random, but can wrap around objects. So that they twist around tree trunks or pillars.

I'd also like to be able to have ivy branches coming out of the root to wrap around each other as they grow up the wall, and then branch apart into child branches.

What do you think?

Bercon
07-19-2007, 06:17 AM
Nice to see somebody taking up the challenge, I tried to port ivy gen for 3dsmax (since its source code was released) but I never got it working.

Btw, have you consider using particles as leaves? You could use it to easily animate leaves grow, wither and fall off. You'd also get nice animated colors using particle age map.

Spacelord
07-19-2007, 06:48 AM
Hi just another joining the cheer squad :)

I was thinking it would be cool to place dummys on the surface where you want the Ivy to grow along. So you could specify a path you want the Ivy to grow along.
Example : Have one dummy at the bottom have a second one half up the building then another at the top but to the left.

I like what you guys are doing ;)

48design
07-19-2007, 07:08 AM
wow, this thread is growing and growing :o)

I'm sorry to tell you that I don't have the time I thought to help you with the interface design.
But you make a very good job and I think you don't really need me ;oP

good luck!!

Duncs
07-19-2007, 10:01 AM
Hi guys

Some really good work going on in this thread - it's cool to see people brainstorming ideas and coming up with solutions.

Picking up on something mentioned earlier on in the thread - forcing the ivy to conform to a surface - there is a script in the maxscript reference documentation "How to move objects to a surface" that uses raytracing to find points of intersection - it's pretty simple and very fast to execute. Andy Murdock elaborates on this technique on his LOR site - http://www.lotsofrobots.com/Web3/Tutorials/SpiderTutorial/SpiderWalk_FS.htm

Keep up the good work guys - really keen to see how this turns out

Duncs

BebeteLANUITE
07-19-2007, 11:38 AM
Hello Mathew !


Oh! I understand you now.

I would prefer to keep it simple, and just ask the user for max branch length, and max length of child branches. So it the want the ivy to grow for 100 meters, then they can define a max length of 100 meters for branches from the root.

I'am agree with defining branches and child-branches length. I thought to define branches length but not child-branches length. That's a good idea. :)

This should be up to the artist to define. Since they will select the source objects that will be instanced as leafs.

I think we have to allow user to change the look of the leaves. But i think, also, that to save time for the user, the script can directly generate materials, add maps, configure some mtl parameters, and apply it to leaves. The script will provide a render-ready ivy. Just clic place the "root anchor", press "spawn" and render.
And if the user want differents objets for the leaf, he can replace them. I think it could be interesting for users.

We could auto-create a new Standard material, and assign it to the leafs, or allow the user to create their own and provide a reference to that material. Both options should work fine. It should be able to work with any render engine.


I'am agree with using only standard materials. I scripted a standard and raytrace mtl converter to vray and i tought it would be interesting to implement it in the script to allow user have directly mtl he want for his scene. I know this three renderer (Scanline, MR and Vray) but Standard material is used by the three. It's a good way to only use standard mtl.
We can, also, ask the user if he want to directly put the generated mtl in the material editor in following slots. This allow user to modify the material as we want.
Or we can put a rollout for mtl in the script but i think mtleditor is the best for that.

On another topic. I would like to include some new features. The ability to control the orbit of the branches around objects. So that they don't just grow straight up or random, but can wrap around objects. So that they twist around tree trunks or pillars.

In fact, Ivy go straight up (with little divergences) when it climb on trunk or pillar but we can allow orbit control for the user. That's a good idea for graphists can match to their customers waitings. i'am agree. :)


I'd also like to be able to have ivy branches coming out of the root to wrap around each other as they grow up the wall, and then branch apart into child branches.

I don't understand very well what you want to do. Could you explain me ? ;)

I modify the interface to match our waitings.

BebeteLANUITE
07-19-2007, 12:04 PM
Btw, have you consider using particles as leaves? You could use it to easily animate leaves grow, wither and fall off. You'd also get nice animated colors using particle age map.

For animate leaves, i just thinking about animate scale and opacity of the material. When the vertex the leaf is apply to come to his original position (i think about grow script of cathedral short) the leaf appears and grow too. I must search how real ivy grow to see if the position of leaves is stable or they move with the branches growing (less fast, i think). I have as reference, in my remembers, the tentacule plant in jumanji movie.
i think too to make the leaves map swap in the animation with a script controller that swap on maps when the leaf grows.


I was thinking it would be cool to place dummys on the surface where you want the Ivy to grow along. So you could specify a path you want the Ivy to grow along.
Example : Have one dummy at the bottom have a second one half up the building then another at the top but to the left.

It's a good idea to provide a path follow to the ivy. I thought to put a direction to the Root Anchor to force the ivy to go along this direction or put an angle range from where the branches can grow. i think is interesting for the user to point the ivy grow to an object to be sure the ivy grow on it.

I'm sorry to tell you that I don't have the time I thought to help you with the interface design.
But you make a very good job and I think you don't really need me ;oP


Don't be worry ;), i make the interface because i thought we have to know which parameters we have to implement in the code. I think we'll go safer when we know where we go.

Picking up on something mentioned earlier on in the thread - forcing the ivy to conform to a surface - there is a script in the maxscript reference documentation "How to move objects to a surface" that uses raytracing to find points of intersection - it's pretty simple and very fast to execute. Andy Murdock elaborates on this technique on his LOR site - http://www.lotsofrobots.com/Web3/Tu...iderWalk_FS.htm (http://www.lotsofrobots.com/Web3/Tutorials/SpiderTutorial/SpiderWalk_FS.htm)


Thanks a lot for your help. I think tutorial'll be very useful. ;)

mustan9
07-19-2007, 01:21 PM
Thanks everyone for the cheers! :thumbsup:

@nomed: no problem! You can always drop in for a few minutes of help when you feel ready.

I was thinking it would be cool to place dummys on the surface where you want the Ivy to grow along. So you could specify a path you want the Ivy to grow along.


Yes, I agree. You should be able to do something close to that with the first version. Just create geometry in the shape of the ivy you want, and it will grow along it's surface.

Instead of target dummies I was thinking of allowing people to provide splines at the main path for the trunk of the ivy. It would wrap around the path splines, and then branch out onto the surface of objects.

Man, lots of new posts to read this morning! :)

mustan9
07-19-2007, 01:40 PM
I don't understand very well what you want to do. Could you explain me ? ;)

I modify the interface to match our waitings.

I'm thinking something like this image.

http://img504.imageshack.us/img504/604/testtp5.jpg (http://imageshack.us)

As the vines grow out of the root they wrap around each other.

dellis
07-19-2007, 08:50 PM
You know what....that dummy idea is pretty good...you two superstars could probably borrow from Neil Blevins Wire Jumble script, which does pretty much that same thing. I can't wait to start messing with this thing.....

BebeteLANUITE
07-19-2007, 10:02 PM
You know what....that dummy idea is pretty good...you two superstars could probably borrow from Neil Blevins Wire Jumble script, which does pretty much that same thing. I can't wait to start messing with this thing.....

I feel you are ironic.
I don't think i'am a superstar. I'am new in maxscript. I want to learn by making a project.
All begin somewhere.
Dummy's path idea is a good idea. I don't tell the contrary. I don't reject it.

At this time, we have do nothing definitive. We think about using path-line to make this function possible, if we decide to implement it. But We can be wrong and take an other way.
I'am not a professional of scripting and i want to test to understand.

Thanks a lot for your reference about Neil Blevins.

mustan9
07-19-2007, 10:37 PM
I've added little more to the script.

Root Anchor can now be a Point helper, spline shape, or geometry.

- if it's a pointer helper then it will sprout ivy from it's position

- if it's a spline shape then it will sprout ivy from point along the spline

- if it's a geometry object then it will sprout ivy from all over it's surface.

There are a couple of new paramters.

sprouts: this is how many ivy root branches are created
variation: variation of the sprout angle
clustering: how bunched together the ivy root branches are.
seed: seed for random number generator
ivy formation: options for where on spline or geometry sprout grow from.

I also added "external forces" such as "primary", "gravity", "sprouts" and "wiggles".

Half the time I don't know what to call something. So if you want to rename those parameters in the GUI. Feel free.

I'll see if I can do some more work later tonight.

EDIT: those new parameters are not all working. still work in progress.

cya.

mustan9
07-20-2007, 01:40 AM
Anyone know Neil's website url? I can't remember. It's something "burn" I think.

dellis
07-20-2007, 01:47 AM
Neils site:

http://www.neilblevins.com/

Script links:

http://www.neilblevins.com/soulburnscripts/soulburnscripts.htm

48design
07-20-2007, 06:09 AM
hey ho,

I watch this thread every hour if I have the time! it's getting better and better :)
I even got the time to test the script for some seconds and am wondering why the first
branch always makes this turn to the root again?

The Interface is getting bigger and bigger and one should hope to find the buttons needed in this jungle :D
when the scripting phase is done I would take the design part of this interface (I hope I have the time then!)

thanks,
nomed

BebeteLANUITE
07-20-2007, 12:30 PM
Hello guys !

Mathew, you go very fast. I can't follow you. But i'll try ;)
I see you call the script "Ivy generator". Ivy called it "Ivy Spawner"
to avoid mistaking with the great tool of Thomas Luft.
You prefer to keep "Ivy Generator" ?


I'm thinking something like this image.

http://img504.imageshack.us/img504/604/testtp5.jpg (http://imageshack.us/)

As the vines grow out of the root they wrap around each other.

Ok ok, i'am understand. I think this parameter must be for give a particular look to the ivy.
To let graphist be creative but I think that ivy doesn't do that naturally. But it's a good idea.

Root Anchor can now be a Point helper, spline shape, or geometry.

- if it's a pointer helper then it will sprout ivy from it's position

- if it's a spline shape then it will sprout ivy from point along the spline

- if it's a geometry object then it will sprout ivy from all over it's surface.

I'am agree for the way to select object for root anchor.
I designed a root anchor :
http://www.alienstrabism.com/customscripts/ivy_spawner/pics/root_anchor.jpg
But i must script it's creation :)

I think the script can make a mouse creating. The user click somewhere on the scene and this root anchor appears and stuck to the mouse pointer. The anchor follow faces direction in the viewport (Like autogrid) and a second clic drop put the anchor in the scene at the place and direction of the face or the world grid.
But allow user to choose an emitter object, it's a very good idea.

sprouts: this is how many ivy root branches are created
variation: variation of the sprout angle
clustering: how bunched together the ivy root branches are.
seed: seed for random number generator
ivy formation: options for where on spline or geometry sprout grow from.

I also added "external forces" such as "primary", "gravity", "sprouts" and "wiggles".

That's interesting ideas and parameters. That i know is the ivy go up and make a curve to go back to the ground (due to the gravity). If the user put the root anchor in a flower pot, he could see the ivy grow up first to go out of the pot. Like on the image.
http://www.alienstrabism.com/customscripts/ivy_spawner/pics/rootanchor_grow.jpg

We can random the grow's direction but the branches must go down with the gravity but if the user put a negative gravity, of course. :)

I put some Ui elements like "branches length limit". you talked about giving branches length . I thought about giving a branches length limit to allow the script giving randomness to them.
What do you think about it ?

I put, also, a checkbox "Put Created Materials in Material Editor (Start on Slot1)"
To allow user to send material of the ivy to the material editor.

mustan9
07-20-2007, 03:05 PM
Mathew, you go very fast. I can't follow you. But i'll try ;)
I see you call the script "Ivy generator". Ivy called it "Ivy Spawner"
to avoid mistaking with the great tool of Thomas Luft.
You prefer to keep "Ivy Generator" ?

Haha.. Sorry if I'm going quickly. I am on vacation right now, and thought it would be good to catch up on some of my MaxScript experience. If you don't use it, then you will loose it!


I designed a root anchor :
http://www.alienstrabism.com/customscripts/ivy_spawner/pics/root_anchor.jpg
But i must script it's creation :)


That is very cool! The arrow should point upwards. Um. Paul Neale has some scripted spline objects. Take a look http://paulneale.com/scripts.htm

That's interesting ideas and parameters. That i know is the ivy go up and make a curve to go back to the ground (due to the gravity). If the user put the root anchor in a flower pot, he could see the ivy grow up first to go out of the pot. Like on the image.

We can random the grow's direction but the branches must go down with the gravity but if the user put a negative gravity, of course. :)


I agree. It should act like a particle system, except when it's sticking to a wall. Then it grows upwards without gravity effecting it.

I put some Ui elements like "branches length limit". you talked about giving branches length . I thought about giving a branches length limit to allow the script giving randomness to them.
What do you think about it ?

Maybe something like this:

Sprout Length: -> how long first sprouted branches can be
Sprout Length Variation: -> 100% would be completely random from 0 to max length, and say 50% would be from (max_length * 0.5) to (max_length).

Then have a different set of parameters for child branches, which we call Branches.

Branch Length: -> a percentage length of the parent branch. (i.e. 50% or 150%).
Branch Length Variation: -> same as above.

I think we need to call the first branch that comes out of the ground as "sprouts", and child branches that come off that sprout as "branches". Sort of like "tree trunk" and "tree branches". This way we can control them separately.

I put, also, a checkbox "Put Created Materials in Material Editor (Start on Slot1)"
To allow user to send material of the ivy to the material editor.

I was thinking we could provide a list of buttons, and the user can drag-and-drop what materials they want used into the interface.

Also, these buttons could have materials created automaticly by default.

Have a look at the "materialbutton" GUI control in the MaxScript manual. We need stuff like that.

mustan9
07-20-2007, 03:08 PM
The Interface is getting bigger and bigger and one should hope to find the buttons needed in this jungle :D
when the scripting phase is done I would take the design part of this interface (I hope I have the time then!)

I like to have nice bitmap images, and icons in the interface. Think you could help with that?

How about a nice banner image for the About rollup.

We also need people to share textures of leaves, tree park, textures we can use for flowers, and low-res models of fruits like grapes.

Oh, and we need beta testers to report bugs. We developers don't have time to test stuff! :rolleyes:

mustan9
07-20-2007, 03:11 PM
Forgot to reply to your question. Sorry.

I see you call the script "Ivy generator". Ivy called it "Ivy Spawner"
to avoid mistaking with the great tool of Thomas Luft.
You prefer to keep "Ivy Generator" ?

Can we call it "Vine Generator" or "Vine Maker" or "Vine Grower". Something with vine. I am one of the worst guys for naming stuff. How about this: People who visit this thread. Please post your idea of a script name!

Ivy can just be one of the types of planets it can grow, but there are grape vines, and even alien plant life.

So people can have wide range of options.

dellis
07-20-2007, 05:52 PM
I have some leaves that i can give. I'll do up a bunch more as well. I think i might have some tree bark as well. Mathew, do you want me to send them to ya when i round them all up?

dutch_delight
07-20-2007, 08:16 PM
Just wanted to say how great i think this project is.

When it was first posted, I started looking into a routine that'll make the ivy attach itself to a wall (mulitple objects). It's slowly getting there and if you guys are interested I could rewrite it so it uses your routines.

At the moment I have a spline randomly growing. It then checks for collision with and object, creates a gripping branch along the wall when it does and reverses the angle to recalculate a position away from the collided object for the main root branch.

Next thing is to have it so that the collided point on the wall becomes an influence for the growth of the main root so it will look like it's growing up it.

Still early days but would love to help out.

mustan9
07-20-2007, 08:57 PM
@dellis: You can post them here on the thread, or send them to my e-mail address. It's on my website at the bottom of every page.

@dutch_delight: If you have any code, then please do share. Even if it's not finished. We can get it working, or at least get ideas on how to solve problems with.

Thanks guys!

mustan9
07-20-2007, 09:01 PM
I even got the time to test the script for some seconds and am wondering why the first
branch always makes this turn to the root again?

Thanks for reporting the bug. It's been fixed for the next release.

mustan9
07-21-2007, 02:12 AM
Here's another update.

I add a group section for defining the properties for generating the geometry for the branches.

radius: -> the starting radius of the sprouted branches.
bias: -> don't work, but suppose to apply a curve to the radius over the length of the branch
sides: -> number of sides for the geometry. Note: There is a turbosmooth applied to each branch, so use low numbers.
twist: -> this will twist the branch
view sub-d: -> the turbosmooth iterations in the viewport
render sub-d: -> the render interations

I also renamed the buttons at the bottom. "Create" will create the splines for the vine, and "Apply Mesh" will generate the mesh. "Delete" doesn't work.

Right now, each branch is it's own object. I'll fix that later. Also, you can't update after creating the branches. You have to manually did them. I'll also fix this later.

There is no uvw texture coordinates for the mesh. That's coming in a later release when we start on the materials.

Here's a sample image of a vine I rendered with this release.

http://img514.imageshack.us/img514/7019/vineimageje7.jpg (http://imageshack.us)

Enjoy!

:)

BebeteLANUITE
07-21-2007, 03:53 PM
Oh god :eek: !!

You swith in hyperspace mode, mathew :)
That look great !!

That is very cool! The arrow should point upwards. Um. Paul Neale has some scripted spline objects. Take a look http://paulneale.com/scripts.htm


I'll work on that. Ok for pointing the arrow upward. ;). I made it point on the ground to tell the script where the "sprouts" :) must go. But if we can tell the script to which object go. We don't need the arrow.

Maybe something like this:

Sprout Length: -> how long first sprouted branches can be
Sprout Length Variation: -> 100% would be completely random from 0 to max length, and say 50% would be from (max_length * 0.5) to (max_length).

Then have a different set of parameters for child branches, which we call Branches.

Branch Length: -> a percentage length of the parent branch. (i.e. 50% or 150%).
Branch Length Variation: -> same as above.

I think we need to call the first branch that comes out of the ground as "sprouts", and child branches that come off that sprout as "branches". Sort of like "tree trunk" and "tree branches". This way we can control them separately.

i'am agree with that. That give a lot of possiblities for the user.

I was thinking we could provide a list of buttons, and the user can drag-and-drop what materials they want used into the interface.

Also, these buttons could have materials created automaticly by default.

Have a look at the "materialbutton" GUI control in the MaxScript manual. We need stuff like that.

Very great idea. The user can drag an drop the material he want to modify in the mtleditor. I looking for that too to understand it ;)

I have some leaves that i can give. I'll do up a bunch more as well. I think i might have some tree bark as well. Mathew, do you want me to send them to ya when i round them all up?

Thanks for your help Dellis ;)

Just wanted to say how great i think this project is.

When it was first posted, I started looking into a routine that'll make the ivy attach itself to a wall (mulitple objects). It's slowly getting there and if you guys are interested I could rewrite it so it uses your routines.

At the moment I have a spline randomly growing. It then checks for collision with and object, creates a gripping branch along the wall when it does and reverses the angle to recalculate a position away from the collided object for the main root branch.

Next thing is to have it so that the collided point on the wall becomes an influence for the growth of the main root so it will look like it's growing up it.

Still early days but would love to help out.

That help us a lot. Thank you. ;)


Can we call it "Vine Generator" or "Vine Maker" or "Vine Grower". Something with vine. I am one of the worst guys for naming stuff. How about this: People who visit this thread. Please post your idea of a script name!

Ivy can just be one of the types of planets it can grow, but there are grape vines, and even alien plant life.

I think something like "Vine Generator" or "Vine Grower" will be great.

You make a very great job, mathew ;).

mustan9
07-21-2007, 07:28 PM
Oh god :eek: !!

You swith in hyperspace mode, mathew :)
That look great !!

hahah.. thanks!

I got child branches working for the next release. Which I'll post later tonight.

Here's a tree created with the script.

http://img162.imageshack.us/img162/660/vineimage02wb7.jpg (http://imageshack.us)

BebeteLANUITE
07-21-2007, 09:40 PM
I got child branches working for the next release. Which I'll post later tonight.

Here's a tree created with the script.

http://img162.imageshack.us/img162/660/vineimage02wb7.jpg (http://imageshack.us/)


You went so far. That's look fantastic. :) I'am impress. Good Job !!

mustan9
07-21-2007, 09:56 PM
Ok! I think I got a lot done today. :thumbsup:

http://img522.imageshack.us/img522/4787/vineimage03hh5.jpg (http://imageshack.us)

new rollup "Configuration" holds config properties for the script.

There are three checkboxs. You can now control if the viewports are updated when the script is running.

"memory usage" section not done.

"object creation"
turn on/off turbosmooth modifier on branches.
adjust color for object wireframes
adjust names for objects

the "vine spawner" rollup had some parameters moved to another rollup.

new rollup "branches" holds config properties for creating the branches.

radius: -> thickness of branches
trunk length: -> higher values push the birth of branches up further on the main trunk
sides: -> how many sides for the geometry
twist: -> twisting the brances
view sub-d / render sud-d: -> iterations on the turbosmooth modifier
depth: -> how many child-branches can be created. Higher values make a denser tree, but takes longer.
spacing: -> how far apart child branches grow on it's parent branch

the start/end grow length parameters control how long child-branches are as they sprout near the tips of branches.

Also,
the "create" button can now be clicked repeatedly. It will delete old splines.
the "apply mesh" button can now be clicked repeatedly. It will delete old geometry.
the "delete" button now works. It will delete the plant from the scene.

Enjoy,

dellis
07-23-2007, 07:34 PM
Mathew,

Very cool! Okay...so i rounded up some leaves. There are a bunch of different ones but let me know if there is anything more i can do....like if you have some reference images of specific leaves, i'll do the PS work. I'm still rounding up the tree bark maps. I think i'll go and shoot some tonight.

Anyway, here are the leaves:

http://www.dwayneellis.com/misc/textures/Leaves.rar

Great work guys....keep it up!

drdubosc
07-23-2007, 07:53 PM
Can we call it "Vine Generator" or "Vine Maker" or "Vine Grower". Something with vine. I am one of the worst guys for naming stuff. How about this: People who visit this thread. Please post your idea of a script name!


Viticulture?
Jeepers? (Creepers)

mustan9
07-24-2007, 01:45 PM
@dellis -> thanks for the texture maps! I have started work on the leaf generator.

@drdubosc -> that's a cool name.

dellis
07-24-2007, 08:41 PM
VineSpawn, VineSpawner, Vine Factory, Everything's Vine, A Fine Vine, Vine Yard, Vine Creator, Vine Producer, Vine Gardener, Vine Farmer, VineLife, VineGrow...and that's about it for me!

mustan9
07-25-2007, 01:26 PM
VineSpawn, VineSpawner, Vine Factory, Everything's Vine, A Fine Vine, Vine Yard, Vine Creator, Vine Producer, Vine Gardener, Vine Farmer, VineLife, VineGrow...and that's about it for me!

lol! Those are great. I would like to use "Everything's Vine"! Also Vine Farmer, and Vine Gardener are also great names!

I have completed the adhesion and collision calculations in MaxScript, but the performance is so slow you couldn't use it for even something simple.

So, I'd like to write so routines in C++ and call them from MaxScript. Does anyone have some C++ sample source code of a function that can be called from MaxScript?

dellis
07-25-2007, 02:51 PM
Not sure if this is along the same lines as you were thinking but i'm pretty sure i remember Blur Studios allowing people the source for their L-System plugin.

avolution
07-25-2007, 03:37 PM
Do I install the ivy5.ms as a macroscript in the UI or
do I run it from the RUN/Script command.

When I run it from Max6/RunScript
I get no response at all in the listener

Thanks

mustan9
07-25-2007, 05:07 PM
When you run the script it will auto-create the macro in your UI/macroscripts folder.
I recommend that you copy the script to the UI/macroscripts folder yourself.

If your running Max9, then I think it auto-creates the macros in your user folder and not the Max application folder.

After the macro's are installed they will appear availible when you customize the interface. Under the category of "Mathew3d.com". You can assign it to a toolbar, menu, or hotkey.

In a later release we'll include some documentation, and also a Zip package that will auto-install the scripts for you.

avolution
07-25-2007, 06:01 PM
I have gotten as far as below quoted
but I get the enclosed picture as a script error in 3ds Max 6




When you run the script it will auto-create the macro in your UI/macroscripts folder.
I recommend that you copy the script to the UI/macroscripts folder yourself.

If your running Max9, then I think it auto-creates the macros in your user folder and not the Max application folder.

After the macro's are installed they will appear availible when you customize the interface. Under the category of "Mathew3d.com". You can assign it to a toolbar, menu, or hotkey.

In a later release we'll include some documentation, and also a Zip package that will auto-install the scripts for you.

mustan9
07-25-2007, 09:27 PM
I have gotten as far as below quoted
but I get the enclosed picture as a script error in 3ds Max 6

Sorry, but I think you need at least Max 7 to run the script.

mustan9
07-27-2007, 02:52 AM
Hi,

I am about 75% finished the generation of the leaves, but don't want to publish the next beta release until it's correct. The UV texturing isn't right.

Here's some teaser images for the next release.

http://img512.imageshack.us/img512/6442/vineimage04zj8.jpg (http://imageshack.us)

An updated interface.

http://img401.imageshack.us/img401/9753/vineimage05jp7.jpg (http://imageshack.us)

dellis
07-27-2007, 02:45 PM
Very cool! I'm thinking that maybe we need a bit more variation in the leaf textures. The distribution looks good but i'm thinking that maybe 3 different versions of the leaves is in order. Maybe a light, dark and one version as is. Let me know if you want me to help at all. Its looking really good...great job!

mustan9
07-27-2007, 03:02 PM
Thanks dellis,

The new "Material ID" parameter will allow you to define how many IDs are created. If you assign the value 5, then leafs will randomly have (1,2,3,4,5) ID's assign to their faces. So you should be able to create different types of leaves to get the look you want by using a multi/sub-material.

MarkD
07-27-2007, 03:28 PM
Amazing work guys! I'll be watching this thread closely =)

BebeteLANUITE
07-27-2007, 11:05 PM
OH GOD !! :eek:
That's a wonderful job you do Mustan9 !! :eek:

I've got a lot of job to do.
But i still working on materials for leaves.

Congratulation mustan9.
that's wonderful. ;)

Spacelord
07-28-2007, 03:35 AM
Wow Crap thats looking wicked !!! Thats sweet.
Is it possible to run the script once using more then one seed/root ?

mustan9
07-28-2007, 06:56 PM
Sure, you can use a Point helper, Spline, or Geometry to root locations. You can't use more then one point helper, but you could use the vertices on geometry which would give you the same result.

Spacelord
07-28-2007, 10:36 PM
Sure, you can use a Point helper, Spline, or Geometry to root locations. You can't use more then one point helper, but you could use the vertices on geometry which would give you the same result.

Great to hear :)

Looking forward to the next release.

cheers

mustan9
07-29-2007, 01:11 AM
Hi everyone,

"Everything's Vine 0.6-Beta" is released.

This release marks several changes to the script, but most importantly it now generates leaves, and texture mapping for all geometry.



The script has been renamed to "Everything's Vine" and this release has become Everything's Vine Beta 0.6!
There is now an install MZP file included. This can be drag-drop into a Max view port, or it can be run from MaxScript. This will install Everything's Vine as a macro. You will have to create a toolbar or menu for the new macro.
This release was package as a Zip file containing the MZP file for 3D Studio Max, and a PDF manual.
The PDF manual is mostly empty, but contains general description on how to install the script. First time users should read the manual first.
There is a new rollout for the leaves section. You can control the orientation of the leaves, and their generation pattern. I won't document for you each parameter this time, but will update the manual for the next release. Sorry, you'll have to wait a little longer for documentation.
There are new material buttons on the interface. Clicking these will allow you to create a material for the leaves, and branches. It's still work-in-progress, but there is a "M" button to bring up the material editor.
Some parameters require you to click the "update" button before you will see the changes in the geometry.
That's about it! Enjoy this release, and please let me know of any bugs, new ideas, or images you create.

Later,

Spacelord
07-29-2007, 02:19 AM
Looking great mathew,
Just having a play with it at the moment and trying to figure out how to get the vine to climb over geometry, I realise you can select geometry or dummy objects. But can you specify a place where you want the vine to start growing from when you select geometry and not faces or vertices, etc. ? I'd like to select a dummy object (this is where the vine will start from) then select the geometry (building or whatever) and have it grow over the building from the dummy object.

cheers

I've only spent a couple of minutes with it, so I've probably missed something.

mustan9
07-29-2007, 03:31 PM
Adhesion to geometry is not implemented yet. I'm faced with how to best implement this feature. Will have to write some C++ using the SDK, but then I have to compile it for the different versions of 3D Studio Max. That's a problem because I don't have the SDK for Max 7.0.

guruware
07-29-2007, 04:34 PM
That's a problem because I don't have the SDK for Max 7.0.

that shouldn't be a problem
- you can send me some source to compile it for any max version
- or i send you the sdk, dunno if it's legal to do this, have to read the EULA :)

guruware

mustan9
07-29-2007, 06:04 PM
Thank you very much!

I will add you to the credits in the documentation. :)

muzbee3d
08-04-2007, 12:12 AM
NICE work guys ! keep it growing ! http://forums.cgsociety.org/images/icons/icon13.gif
thanks for sharing.

Maneswar
08-04-2007, 01:03 AM
Wow, this is pretty amazing and I was just in need of some Ivy for an architectural project a friend and I were working on.

I'll have to take a look at the script work to see where I might be able to offer some suggestions, if any. :)

Thanks so much for developing this and sharing.

Maneswar

mustan9
08-06-2007, 03:08 AM
I know it's been a while since I posted another update. Just wanted to say that project is still alive.

I have implemented the adhesion and collision routines in C++, and added support to the script to use the new functions. Vines now climb up the surface of objects, but it still needs a little more work.

The next release will be for Max9.0 on the 32-bit platform. Unless someone would like to recompile the plug-in for me?

maxplugins
08-06-2007, 08:16 AM
I can do a Max 8 version and Max 9 64-bit version if you want me to. Just let me know...

Dave

guruware
08-06-2007, 10:11 AM
as said above... :)

guruware

mustan9
08-06-2007, 05:32 PM
Thank you very much guys. When I post the next release I'll include the build projects for Visual Studio Express setup for 3D Studio Max 9 - 32bit. I hope this will be enough for you to post recompiled for the different versions of Max.

I do have the Max 7,8, and 9 of the SDK, but not the older VC to recompile them.

I hope to release the next build in a couple of days.

maxplugins
08-06-2007, 06:24 PM
You can compile for Max 8 with VS2005, that's what I've been doing with all of the old plugins I recently recompiled.

Dave

mustan9
08-06-2007, 06:40 PM
You can compile for Max 8 with VS2005, that's what I've been doing with all of the old plugins I recently recompiled.

I was told and read in the manual that this was not recommended.

maxplugins
08-06-2007, 07:56 PM
You just need to work around the Max_Mem stuff...
It doesn't matter, when you post the stuff here, I'll compile it for Max 8 for you.

Dave

DaForce
08-07-2007, 08:19 AM
This is VERY cool, will be keeping an eye on this thread ;)

SuperRune
08-11-2007, 12:10 AM
Very cool stuff in this thread! I have to testify that I've been working on a tree/branch generator myself, which will also be able to grow along surfaces.

Just thought I'd tip you about the Siggraph paper that the Thomas Luft program seem to be based on: Modeling Plants with Environment Sensitive Automata (http://www.ics.uci.edu/%7Earvo/abstracts/ESA.abs.html)

Classic paper, and since it's so old (in CG terms) it's quite easy to read as well.

I also recommend the Creation and Rendering of Realistic Trees (http://www.cs.duke.edu/education/courses/fall02/cps124/resources/p119-weber.pdf) paper, which has an excellent suggestion for parameters that could be used for tree generation. That paper was the basis for the Arbaro (http://arbaro.sourceforge.net/) tree generator for POV-Ray.

There's another POV-Ray tree generator that creates some amazing looking stuff. It's called TOMTREE (http://www.aust-manufaktur.de/austtx.html), and is freely downloadable. And finally, there's a rather brilliant looking plugin for Lightwave called TreesDesigner (http://www.polas.net/trees/shaping.php). I am looking at ways of implementing a method of controlling tree growth similar to TreesDesigner.

Cheers!
Rune

titopte
08-16-2007, 05:11 PM
hi,
first of all. thanks for the effort and kindness on sharing this.
i was curious about what´s going on with the script and if you´re havin difficulties making it stick to geometry.
congrats on your work

mustan9
08-16-2007, 07:03 PM
Hi people, my apologizes for not posting the latest update to Everything's Vine. I was previously on vacation, and had lots of free time to work on the script but since then have returned to work. I’ve taken on new responsibilities at work, and this has caused me to be distracted and tired for the past 2 weeks. I hope to settle down into a normal routine soon.


On a related topic; I have also started construction of a new website that will be hosting these scripts and other people's scripts. I wish to go live with the new website as soon as possible, but the wish list of features will take me some time to finish. I don’t want to make false promises, but I hope this new website will include features design exactly for MaxScript programmers and they should enjoy using the websites free services.

Hopefully, everything will settle down into a normal routine and I can put the finishing touches on this script. The next release of the script should be a release candidate and contain all the main features that were discussed.

Let’s hope for some I can pull away from things, and put the finishing touches on this over the weekend.


Thanks for waiting guys!
Mathew.

padreterno
08-18-2007, 11:12 PM
HI at all i'm new of this forum. I want to tell you that your work looks really impressive and promising. I'm an italian indie game developer, actually i'm working on a pc title and your solution seems to be very usefull for me. In our first alpha demo reel, we used some models created using the ivy generator from tomas, but we are experiencing some limitations using it.....we can't control the model complexity and his polycount!!!

We are using a 3rd generation engine, all the shadows and the lights are calculated in realtime via shaders support and then the polycount it's very important. Anyway guys your works looks very promising and i would like to use it into our game project......obviously let me know if we can and how.

Look forward to see some other great looking stuff from you!!!

mustan9
08-28-2007, 12:01 AM
We are using a 3rd generation engine, all the shadows and the lights are calculated in realtime via shaders support and then the polycount it's very important. Anyway guys your works looks very promising and i would like to use it into our game project......obviously let me know if we can and how.

That sounds very cool!

Can you post some sample images of the ivy you created?

48design
10-31-2007, 12:59 PM
maybe offtopic...

did you try pickPoint to set the starting point of the ivy?

mustan9
08-28-2008, 11:44 PM
I'm back working on this project again.

There will be a new release for this script shortly.

msmith81
11-22-2008, 04:02 AM
This is a very cool script! Could you share with me how you changed the colors of the Rollout Floater? I have been searching for ways to do this, and can find nothing

Momentum
03-20-2009, 04:57 AM
Hi this is great! when do you think the animator section will be functional?

CGTalk Moderation
03-20-2009, 04:57 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.