nortikin / sverchok

Sverchok
http://nortikin.github.io/sverchok/
GNU General Public License v3.0
2.22k stars 233 forks source link

CASE: Taipei 101 Tower (simplified version) #345

Closed enzyme69 closed 10 years ago

enzyme69 commented 10 years ago

prtscr capture_21

I am doing a little project study. It's a basic one. Once again, a tower. I have not done Pisa Tower, Pagoda, or maybe Candi Borobudur. Few challenges.

Anyway, while doing actual thing, I often found interesting questions and glitches.

GLITCHES: When INT plugged into the "NVerts" Input, it refuses to work.

QUESTIONS: I am not sure if I am doing the most "correct" way to procedurally built tower, but I think I will do it this way, because it is the most logical for my brain. I like the idea of first having Structure made of Lines. So for case of Tower, that is exactly what I do. Because I can easily separate First, Last and Middle Part.

Thus, I actually use Cylinder for Middle Part. Instead of Boxes. Maybe Boxes is better after some thought.

However, I like the convenience of Cylinder as well. Ablity to adjust the top and bottom radius.

I wonder how is the best way to fill the gap like below? prtscr capture_22

I have many gaps , just because of the way I construct the building.

Then, there is that top part, which has more details. I just draw it using Blender own Edit Mode and then Screw it. It would be neat to do this in Sverchok of course, which is possible, but then it will take some tinkering. The top part is almost like yet another tower.

prtscr capture_23

Anyhow, I think that is about it.

When it comes to detailing, let say the box part is more like Flower pattern, It is like the case of Fence.

From Boxes, I will now need to "Interpolate" of some sort. prtscr capture_24

enzyme69 commented 10 years ago

Before I forgot, note to myself: next: "Candi Borobudur" prtscr capture_25

I think re-creating existing buildings are a good practice projects. And perhaps we can modify the construct once it is parametric and solid.

Although to come up with something original, maybe we need to look at some nature objects and creatures.

enzyme69 commented 10 years ago

With that "Gap" situation, I wonder if it is a matter of "loft between the First and Last" of Cylinder. Or maybe I just use topology of circle.

nortikin commented 10 years ago

i simply not know answer. define extra points, interpolation, uvconnect them. not loft because of your details. if you also want to do some corners (vertical) as in taipei tower, than you need add points with join lists and use some improvisation

enzyme69 commented 10 years ago

ok then cheers!

On Friday, 18 July 2014, nikitron notifications@github.com wrote:

i simply not know answer. define extra points, interpolation, uvconnect them. not loft because of your details. if you also want to do some corners (vertical) as in taipei tower, than you need add points with join lists and use some improvisation

— Reply to this email directly or view it on GitHub https://github.com/nortikin/sverchok/issues/345#issuecomment-49417097.


zeffii commented 10 years ago

top part, why not svLathe.

enzyme69 commented 10 years ago

Yes, that should be lathe in Sverchok.

however, the interaction making curve is still in edit mode,

zeffii commented 10 years ago

I have been thinking for a while about a Profile Node it would let you define a profile in two dimensions and spit out the 3d version. The dimension that you didn't specify would default to 0. It would be similar to a List Input Node, but with named variables to keep the definition compact No ETA but it's on my mind often.

a = 2.5
b = 1.345
c = b/2
text field : `[ (a, -a), (a, -b), (c,a) ....]`  

The 3rd dimension (could be x, y or z ) is generated automatically -- very similar to Formula node..

enzyme69 commented 10 years ago

Interesting... How did you come up with this? :)

I will think a bit on this. Maybe will figure it out one day.


zeffii commented 10 years ago

In SVG / d3.js everything is 2d. And d3.js allows really simple definition of 2d line sequences. Because it's code it's handy to think in terms of variables that can be reused and negated. In 3D-Profiles we almost never need to think about one of the dimensions.

In SVG you can even define a closed line by writing this string L0 0 2 2 1 2 3 4z which is equivalent to L 0,0 2,2 1,2 3,4z Spaces are important, then the parser looks at commas. Specifically in d3.js you can do

points = [[0,0],[2,2],[1,2],[3,4]];
path = "L" + [points] + "z";

Thus when defining the path as an array you can use variables. (this makes more sense if you have non integer or dynamic numbers-- which you don't want to or can't type out repeatedly)

a=0.0003;
b=1.3423;
c=3.2343;
d=3.3433;
e=d/2;
points = [[a,a],[c,-c],[b,2],[d,-e]];
path = "L" + [points] + "z";
enzyme69 commented 10 years ago

I actually like the 2 dimensional thinking. Turtle, Processing, NodeBox. This must be related to your L-System.

zeffii commented 10 years ago

would be sweet to draw grid_snapped geometry straight in nodeview. https://www.youtube.com/watch?v=USyoT_Ha_bA ( Ivan Sutherland : Sketchpad Demo )

But yes, This is in the same vein as L-system

enzyme69 commented 10 years ago

I had the same thought at some point.

Maybe we draw loose with Grease, then snap it to grid, then smooth it and resample again.