![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Jim Charter <jrc### [at] msn com> wrote:
> On a whim I spent just a little time poking around with Google to
> investigate how difficult it would be to set up a virtual space with a
> viewpoint that can be zoomed, dollyed, and panned. This could be in a
> browser or in a separate viewer. At first blush it seems that panning
> the camera or rotating an object is easy, also zoom, but dollying the
> camera not so? Is this true? Does this function present a particlar
> hurtle that panning and zooming doesn't? Google maps does it. Does the
> difficulty increase linearly or exponentially?
As a disclaimer, I could be totally out in left field here. Are you looking for
an 3D API? I'm not sure if it's headed in the right direction, but I use GLUT
for this type of thing. It's avery simple and completely cross-platform
wrapper for OpenGL so you don't have to worry about all the platform-dependent
details. The OpenGL tutorials at http://nehe.gamedev.net/ are more than enough
to get started. If you want something web-browser-oriented then I can't help
you, but the intended use here is for simple games and interactive simulations.
I've been looking at FLTK (http://www.fltk.org/) to add more of an interface
along with the OpenGL stuff, but that's not really off the ground yet.
Here's a couple examples:
http://rsreusser.googlepages.com/glutApp2.tar.gz
http://rsreusser.googlepages.com/nurbs3d.tar.gz
http://rsreusser.googlepages.com/fluid.tar.gz
The first just draws a rectangle where you can pan and zoom in two dimensions.
The second is the 3D equivalent, with a NURBS curve editor. With some simple
projection math, you can select points, zoom, pan, and rotate. And the last
one, just for fun, is a simple fluid simulation. Click and drag!
I'm not sure if this is what you have in mind, but it met my needs very well for
a similar task. You just define a location for the camera, as in POV-Ray, and
use mouse and keyboard functions to set up the interaction. It's not something
you'd program Google Earth in, but it's a good start for the rest of us.
Hope this could be of any use.
- Ricky
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> That's encouraging, thanks. I think I'm going to give it a shot.
Cool, whether you choose OpenGL or DirectX, there is a huge amount of
resource on the web to help get you started. I don't have any recent
experience with OpenGL, but DirectX has a lot of documentation included in
the download, with lots of tutorials and sample projects.
Both OpenGL and DirectX work with 4x4 matrices for everything, so in the end
your camera is represented by a 4x4 matrix. If you're good at maths you can
program these 16 values directly in your code (as I believe you can in POV
as well), but of course there are built-in functions for creating these
matrices automatically. The parameters they take are similar to the ones
you use in the POV camera block.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
triple_r wrote:
> Jim Charter <jrc### [at] msn com> wrote:
>
>>On a whim I spent just a little time poking around with Google to
>>investigate how difficult it would be to set up a virtual space with a
>>viewpoint that can be zoomed, dollyed, and panned. This could be in a
>>browser or in a separate viewer. At first blush it seems that panning
>>the camera or rotating an object is easy, also zoom, but dollying the
>>camera not so? Is this true? Does this function present a particlar
>>hurtle that panning and zooming doesn't? Google maps does it. Does the
>>difficulty increase linearly or exponentially?
>
>
>
> As a disclaimer, I could be totally out in left field here. Are you looking for
> an 3D API? I'm not sure if it's headed in the right direction, but I use GLUT
> for this type of thing. It's avery simple and completely cross-platform
> wrapper for OpenGL so you don't have to worry about all the platform-dependent
> details. The OpenGL tutorials at http://nehe.gamedev.net/ are more than enough
> to get started. If you want something web-browser-oriented then I can't help
> you, but the intended use here is for simple games and interactive simulations.
> I've been looking at FLTK (http://www.fltk.org/) to add more of an interface
> along with the OpenGL stuff, but that's not really off the ground yet.
>
> Here's a couple examples:
>
> http://rsreusser.googlepages.com/glutApp2.tar.gz
> http://rsreusser.googlepages.com/nurbs3d.tar.gz
> http://rsreusser.googlepages.com/fluid.tar.gz
>
> The first just draws a rectangle where you can pan and zoom in two dimensions.
> The second is the 3D equivalent, with a NURBS curve editor. With some simple
> projection math, you can select points, zoom, pan, and rotate. And the last
> one, just for fun, is a simple fluid simulation. Click and drag!
>
> I'm not sure if this is what you have in mind, but it met my needs very well for
> a similar task. You just define a location for the camera, as in POV-Ray, and
> use mouse and keyboard functions to set up the interaction. It's not something
> you'd program Google Earth in, but it's a good start for the rest of us.
>
> Hope this could be of any use.
>
> - Ricky
>
Yes thanks, there's good stuff there. To be honest I am not sure what
the direction is either. That is part of what I am trying to figure
out. My suspicion is that 'browser-oriented' is what I will need in the
end but in order to try and understand the larger context I am willing
to start anywhere.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Jim Charter wrote:
> Yes thanks, there's good stuff there. To be honest I am not sure what
> the direction is either. That is part of what I am trying to figure
> out. My suspicion is that 'browser-oriented' is what I will need in the
> end but in order to try and understand the larger context I am willing
> to start anywhere.
If you decide to go with browser oriented, take a look at Papervision3D
and Away3D, http://www.papervision3d.org/ and http://away3d.com/
respectively. Both are Flash based, but not nearly as confusing as they
could possibly be.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Jim Charter wrote:
> On a whim I spent just a little time poking around with Google to
> investigate how difficult it would be to set up a virtual space with a
> viewpoint that can be zoomed, dollyed, and panned. This could be in a
> browser or in a separate viewer. At first blush it seems that panning
> the camera or rotating an object is easy, also zoom, but dollying the
> camera not so? Is this true? Does this function present a particlar
> hurtle that panning and zooming doesn't? Google maps does it. Does the
> difficulty increase linearly or exponentially?
>
> -Jim
Sounds like a job for... VRML!!!
It's amazing the problems that were solved before 1995, and then
forgotten about :)
Actually, in looking at the Wikipedia page, it seems it's been
superseded by another format, X3D, which sounds like a cross between
VRML and XML (why is XML used for *everything* these days?).
http://en.wikipedia.org/wiki/VRML
http://en.wikipedia.org/wiki/X3D
...Chambers
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Chambers wrote:
> (why is XML used for *everything* these days?).
You only need one parser, and there are automated tools to check for
correct structuring.
The idea behind XML is simple enough, and certainly not without virtue.
Whether XML itself is the best possible way this kind of thing could
have been done... hmm. ;-)
--
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Orchid XP v8 wrote:
> Chambers wrote:
>
>> (why is XML used for *everything* these days?).
>
> You only need one parser, and there are automated tools to check for
> correct structuring.
Still... you'd think that if that were the goal, they could design it so
that it DOESN'T exponentially increase your file size.
...Chambers
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> You only need one parser, and there are automated tools to check for
>> correct structuring.
>
> Still... you'd think that if that were the goal, they could design it so
> that it DOESN'T exponentially increase your file size.
Oh come now, it only induces a *linear* size increase. And any
half-decent compression algorithm can elide that. ;-)
In simple terms, redundancy = it's easier to detect when it's broken.
XML does however have a small zoo of other problems. You know, I lot of
people think that "XML" just means "I make up some tag names" and that's
all there is to it. It's actually way more complicated than most people
realise. I *still* can't get it to work right... :-S
--
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Chambers wrote:
>
> Sounds like a job for... VRML!!!
>
I thought I was the only person who looked at Google's new Lively, and
was reminded of Blaxxun's Colony City.
> It's amazing the problems that were solved before 1995, and then
> forgotten about :)
>
> Actually, in looking at the Wikipedia page, it seems it's been
> superseded by another format, X3D, which sounds like a cross between
> VRML and XML (why is XML used for *everything* these days?).
>
Because XML must be hundreds of times easier to parse then VRML, if I
remember right. Different viewers supporting different extensions. And
using VRML for MUD-like systems, and early MMO type games?
Computers and network bandwidth have finally caught up, and the
presentation of media has shifted from distributed computers each with
their own view on the virtual world, to central systems displaying the
same thing to each client. X3D might be able to find a use, but it's not
going to be the same as VRML.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Chambers wrote:
>
> Sounds like a job for... VRML!!!
>
I thought I was the only person who looked at Google's new Lively, and
was reminded of Blaxxun's Colony City.
> It's amazing the problems that were solved before 1995, and then
> forgotten about :)
>
> Actually, in looking at the Wikipedia page, it seems it's been
> superseded by another format, X3D, which sounds like a cross between
> VRML and XML (why is XML used for *everything* these days?).
>
Because XML must be hundreds of times easier to parse then VRML, if I
remember right. Different viewers supporting different extensions. And
using VRML for MUD-like systems, and early MMO type games?
Computers and network bandwidth have finally caught up, and the
presentation of media has shifted from distributed computers each with
their own view on the virtual world, to central systems displaying the
same thing to each client. X3D might be able to find a use, but it's not
going to be the same as VRML.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |