POV-Ray : Newsgroups : povray.advanced-users : Outputting the outlines of a scene Server Time
10 Oct 2024 10:01:03 EDT (-0400)
  Outputting the outlines of a scene (Message 1 to 9 of 9)  
From: Mike Horvath
Subject: Outputting the outlines of a scene
Date: 16 Feb 2020 18:26:35
Message: <5e49cfab$1@news.povray.org>
[Sorry for the double post. This is the second time Thunderbird has 
messed up on me recently.]

I want to create an imagemap with hotspots based on the following 
POV-Ray scene:

https://mjhorvath.github.io/Datsville/docs/high-resolution-render/high-resolution-render.html

I was wondering if there were maybe some way of automating the process, 
by outputting the outlines of the objects that I can later vectorize in 
Illustrator or Inkscape?

I know someone made a vector outline tool for Blender, but I'm not sure 
how it works, or if it works _well_ at all.

Any ideas? Thanks so much!


Michael


Post a reply to this message

From: Bald Eagle
Subject: Re: Outputting the outlines of a scene
Date: 16 Feb 2020 18:55:01
Message: <web.5e49d5f33fbe391d4eec112d0@news.povray.org>
Mike Horvath <mik### [at] gmailcom> wrote:
> was wondering if there were maybe some way of automating the process,
> by outputting the outlines of the objects...
.....
> Any ideas? Thanks so much!

Hmmm.

If you have all of the objects as object{}s, then you could

1. Use the object pattern and take a thin slice out of the center.

2. Apply a pigment map that is clear except for a slice in the center.

3. Use an infinitely scaled object pattern in a function
http://news.povray.org/povray.binaries.images/message/%3Cweb.5db22e5fa64722ab4eec112d0%40news.povray.org%3E/#%3Cweb.5db
22e5fa64722ab4eec112d0%40news.povray.org%3E

4. scale the objects _really thin_

aside from that, maybe you could use trace()

OR

If you just define the object's pigment with a finish {diffuse 0} and give it a
face-on lighting with a hard shadow, then maybe that would give you a real
optical silhouette.

There was that discussion a while back about offset curves / shells, so you
could likely use that to make an isosurface shell...


That's it off the top of my head.


Post a reply to this message

From: Mike Horvath
Subject: Re: Outputting the outlines of a scene
Date: 16 Feb 2020 20:40:14
Message: <5e49eefe$1@news.povray.org>
On 2/16/2020 6:53 PM, Bald Eagle wrote:
> If you just define the object's pigment with a finish {diffuse 0} and give it a
> face-on lighting with a hard shadow, then maybe that would give you a real
> optical silhouette.

I remember doing something like this before. I think it can be automated 
to some degree too.

It will still take a lot of time to set things up.

Thanks!


Michael


Post a reply to this message

From: Mike Horvath
Subject: Re: Outputting the outlines of a scene
Date: 16 Feb 2020 22:16:53
Message: <5e4a05a5@news.povray.org>
I have a scene that is made up of dozens of nested objects. Here is the 
top-most layer:

//// Model datsville_master.ldr
#ifndef (datsville__master_dot_ldr)
#declare datsville__master_dot_ldr = union {
// Datsville
// Name: datsville.ldr
// Author: John VanZwieten, Michael Horvath, Tore Eriksson
// !LICENSE Redistributable under CC BY-SA version 3.0 : see 
https://creativecommons.org/licenses/by-sa/3.0/
// Unofficial Datsville Model
// ROTATION CENTER 0 0 0 1 "Custom"
// ROTATION CONFIG 0 0
	// 1 16  0 0 0  1 0 0  0 1 0  0 0 1 layer_blocks_base.ldr
	object { layer__blocks__base_dot_ldr matrix <1,0,0,0,1,0,0,0,1,0,0,0> }
	// 1 16  0 0 0  1 0 0  0 1 0  0 0 1 layer_streets_base.ldr
	object { layer__streets__base_dot_ldr matrix <1,0,0,0,1,0,0,0,1,0,0,0> }
	// 1 16  0 0 0  1 0 0  0 1 0  0 0 1 layer_river.ldr
	object { layer__river_dot_ldr matrix <1,0,0,0,1,0,0,0,1,0,0,0> }
	// 1 16  0 0 0  1 0 0  0 1 0  0 0 1 layer_blocks_overlay.ldr
	object { layer__blocks__overlay_dot_ldr matrix <1,0,0,0,1,0,0,0,1,0,0,0> }
	// 1 16  0 0 0  1 0 0  0 1 0  0 0 1 layer_streets_overlay.ldr
	object { layer__streets__overlay_dot_ldr matrix <1,0,0,0,1,0,0,0,1,0,0,0> }
	// 1 16  0 0 0  1 0 0  0 1 0  0 0 1 layer_traffic.ldr
	object { layer__traffic_dot_ldr matrix <1,0,0,0,1,0,0,0,1,0,0,0> }
// 16 0 0 0 1 0 0 0 1 0 0 0 1 layer_terrain.ldr
}
#end // ifndef (datsville__master_dot_ldr)


Is there any way in POV-Ray to "walk" down the tree and get the name of 
every one of these objects? I'm guessing there is not since I've not 
heard of anyone ever doing this.

Thank you.


Michael


Post a reply to this message

From: Bald Eagle
Subject: Re: Outputting the outlines of a scene
Date: 17 Feb 2020 13:35:00
Message: <web.5e4adc9c3fbe391d4eec112d0@news.povray.org>
Mike Horvath <mik### [at] gmailcom> wrote:

> Is there any way in POV-Ray to "walk" down the tree and get the name of
> every one of these objects? I'm guessing there is not since I've not
> heard of anyone ever doing this.

Likely not.
But it does suggest to me that you might be able to import all that text into a
spreadsheet and filter out all of the "object { ............ <" lines and
copy-paste that into a text file.


Post a reply to this message

From: Alain Martel
Subject: Re: Outputting the outlines of a scene
Date: 17 Feb 2020 16:20:13
Message: <5e4b038d@news.povray.org>
Le 2020-02-16 à 18:26, Mike Horvath a écrit :
> [Sorry for the double post. This is the second time Thunderbird has 
> messed up on me recently.]
> 
> I want to create an imagemap with hotspots based on the following 
> POV-Ray scene:
> 
>
https://mjhorvath.github.io/Datsville/docs/high-resolution-render/high-resolution-render.html

> 
> 
> I was wondering if there were maybe some way of automating the process, 
> by outputting the outlines of the objects that I can later vectorize in 
> Illustrator or Inkscape?
> 
> I know someone made a vector outline tool for Blender, but I'm not sure 
> how it works, or if it works _well_ at all.
> 
> Any ideas? Thanks so much!
> 
> 
> Michael

If you can render the objects separately, you can get a silhouette by 
rendering the object with finish{ambient 0 diffuse 0} against a white 
background. Or, render with +q0, a black pigment and a white background.
If you want a white object against a black background, then, you can use 
this:
pigment{rgb 1}finish{emission 1}
Or, +q0, a white pigment and black background.

For both options, you don't need any light.

Then, in Inkscape, you can use that image to generate that outline. You 
may also use a contour filter as another way to get a line around the 
object.

Only work for the object seen from a specific direction.


Post a reply to this message

From: Mike Horvath
Subject: Re: Outputting the outlines of a scene
Date: 18 Feb 2020 01:31:46
Message: <5e4b84d2@news.povray.org>
I looked at the file again and luckily each object definition is 
preceded by an #undef, so all I had to do was define an empty object 
with the same name before parsing the file, and the object would then be 
skipped.


Michael


On 2/17/2020 1:34 PM, Bald Eagle wrote:
> 
> Mike Horvath <mik### [at] gmailcom> wrote:
> 
>> Is there any way in POV-Ray to "walk" down the tree and get the name of
>> every one of these objects? I'm guessing there is not since I've not
>> heard of anyone ever doing this.
> 
> Likely not.
> But it does suggest to me that you might be able to import all that text into a
> spreadsheet and filter out all of the "object { ............ <" lines and
> copy-paste that into a text file.
> 
> 
>


Post a reply to this message

From: Mike Horvath
Subject: Re: Outputting the outlines of a scene
Date: 18 Feb 2020 01:35:23
Message: <5e4b85ab$1@news.povray.org>
Yes! This is what I ended up trying. However, there are over 100 
buildings, so I wonder how big the SVG will get in the end. Also, I am 
continually updating the scene, so I really need some way to automate 
the process so I don't have to repeat all this work each time. I am not 
sure Inkscape can be run from the command line, or what other tool I 
might use instead.


Thanks!

Michael


On 2/17/2020 4:20 PM, Alain Martel wrote:
> If you can render the objects separately, you can get a silhouette by 
> rendering the object with finish{ambient 0 diffuse 0} against a white 
> background. Or, render with +q0, a black pigment and a white background.
> If you want a white object against a black background, then, you can use 
> this:
> pigment{rgb 1}finish{emission 1}
> Or, +q0, a white pigment and black background.
> 
> For both options, you don't need any light.
> 
> Then, in Inkscape, you can use that image to generate that outline. You 
> may also use a contour filter as another way to get a line around the 
> object.
> 
> Only work for the object seen from a specific direction.


Post a reply to this message

From: Bald Eagle
Subject: Re: Outputting the outlines of a scene
Date: 8 Apr 2020 14:55:00
Message: <web.5e8e1d223fbe391dfb0b41570@news.povray.org>
I just going to throw this link in here to Paul Nylander's work - he does some
interesting things with edges and outlines.

http://bugman123.com/Programs/index.html

Not sure if that's at all helpful, but it's related, and maybe it will inspire
some ideas.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.