I need to do something in openGL which forces me to take a pencil and a paper to do graphwork. I would like to know if there is free program to do that. It have Axes (X-Y-Z) and I can plot let say a cube and get coordinates.
Sorry but complex program for modelling like blender are not option here. I need something to replace simple coordinate geometry I could do on paper. No fancy color, material or anything of that sort.
Thanks
Geogebra is a perfect solution!
Related
I'm not sure if this problem has solution but ill ask anyway ill be glad also for some literature for studying, and some keywords to search.
Lets say I have 3d scan made using kinect.
On the scan there is only a single wall with a door in it. Output from kinect is composed from hundreds of little triangles.
What i want to achieve is that I recognize where is the wall and where is the door and merge wall triangles into lets say few and the same thing with the door triangles.
You want to look at mesh simplification algorithms, but before you do you should probably familiarise yourself with the fundamental concepts of 3D graphics like vertices, matrices and meshes. GDAL and PCL are two libraries that can help you with achieving what you want.
There's also a software called MeshLab, which implements many of the mentioned algorithms and could be of some help to you.
I've been studying 3D graphics on my own for a while now and I want to get a greater understanding of just how everything works. What I would like to do is to create a simple game without using DirectX or OpenGL. I understand most of the math I believe, but the problem I am running up against is I do not know how to get control of the pixels being displayed in a window.
How do I specify what color I want each pixel in my window to be?
I understand I will probably run into issues with buffers and image shearing and probably terrible efficiency problems, but I want to create my own program so that I could see from the very lowest level, of the high level language, how the rendering process works. I really have no idea where to start though. I've figured out how to output BMPs, but I would like to have a running program spitting out 20+ frames per second. How do I accomplish this?
You could pick a environment that allows you to fill an array with values for pixels and display it as a bitmap. This way you come closest to poking RGB values in video memory. WPF, Silverlight, HTML5/Javascript can do this. If you do not make it full screen these technologies should suffice for now.
In WPF and Silverlight, use the WriteableBitmap.
In HTML5, use the canvas
Then it is up to you to implement the logic to draw lines, circles, bezier curves, 3D projections.
This is a lot of fun and you will learn a lot.
I'm reading between the lines that you're more interested in having full control over the rendering process from a low level, rather than having a specific interest in how to achieve that on one specific platform.
If that's the case then you will probably get a good bang for your buck looking at a library like SDL which provides you with a frame buffer that you can render to directly but abstracts away a lot of the platform specifics issues. It has been around for quite a while and there are some good tutorials to give you an idea of whether it's the kind of thing you're looking for - see this tutorial and the subsequent one in the same series, which should be enough to get you up and running.
You say you want to create some kind of a rendering engine, meaning desinging you own Pipeline and matrice classes. Which you are to use to transform 3D coordinates to 2D points.
When you have got the 2D points you've been looking for. You can use say for instance on windows, you can select a brush and draw you triangle values while coloring them at the same time.
I do not know why you would need Bitmaps, but if you want to practice say Texturing you can also do that yourself although off course on a weak computer this might take your frames per second significantly.
If you aim is to understand how rendering works on the lowest level. This is with no doubt a good practice.
Jt Schwinschwiga
My brother and I have been playing the original Oregon Trail on an Apple II emulator, it's so fun. We want to make a clone of it that is sort of a parody but still the same concept and similar engine, we also want to maintain the classic retro charm by using a very similar resolution and the same style of low color bitmap graphics (example from game: http://www.youtube.com/watch?v=QBOLN7I8omY).
My question is what's the easiest or recommended language to achieve this? Should we use C, is it hard to do bitmap graphics like this in C? I know I used to make games as a kid with QBasic and I would do graphics using some bitmap method via an array of strings if I recall correctly it was something like this:
(can't remember variable syntax) = "00,01,00,01,00,04,00"
(can't remember variable syntax) = "00,01,00,01,00,04,00"
(can't remember variable syntax) = "00,01,00,01,00,04,00"
where each two digit number is a pixel, colored based on the number...
Anyways I think I've provided enough info here, recommend away :)
EDIT: I'm most familiar with the syntax style of C# at this point in my career.
Try Processing. You can define largish cubes as your pixels, and do some fancier UI tricks to make those old games a bit more playable, all without having to kill yourself on the graphics part (which is supposed to be Processing's main selling point).
I'm raytracing and would like to speed it up via some acceleration structure (kd-tree, BVH, whatever). I don't want to code it up myself. What I've tried so far:
Yanking the kd-tree out of pbrt. There are so many intra-dependencies that I couldn't succeed at this without pulling all of pbrt into my code.
CGAL's AABB tree. Frustratingly, this seems to return only the point of intersection. Without knowing which triangle the point came from, I can't efficiently interpolate color over the triangle. I'd love to just extend the notion of "Point" with color, but this doesn't seem possible without writing a lot of template code from scratch.
Writing my own. Okay so I wrote my own grid acceleration class, and it works, but it's nasty and inefficient.
So, if anyone can suggest a simple library that I can use for this purpose I'd really appreciate it! All I need is given a triangle soup and ray, find the closest intersection and return the index of that triangle.
Jaco Bikker wrote this series of tutorials: http://www.devmaster.net/articles/raytracing_series/part7.php
They're very helpful and he includes code at the end for a ray tracer using a kd-tree.
You might be able to use that.
The G3D engine has a ray tracing implementation. Not sure how efficient it is though. It shouldn't bee too much trouble to use the Tree implementation without the rest of the library.
Hey guys, I would like to develop a light/laser show editor and simulator, and for this of course I am going to learn some graphics programming. I am thinking about using C# and XNA.
I was just wondering what aspects of graphics programming I should research or focus on given the project I am working on. I am new to graphics programming so I don't know much about it, but for example I imagine something that I might look into would (possibly?) be volumetric lighting.
For example, what would be a practical way to go about rendering a 'laser' of varied width/color? I read somewhere to just draw a cylinder and apply a shader to it, I would like to confirm that this is the way.
Given that this seems like a big project, I was thinking about starting off by creating light sources and giving them properties so that I can easily manipulate them. I have (mis)read that only a certain amount of lights can be rendered at any given time, I believe eight. Does this only apply to ambient lights? Given this possible limitation, and the fact that most of the lights I will use will be directional, such as head-lights or lasers, what would be a different way to render these? Is that what volumetric lighting would be?
I'd just like to get some things clear before I dive into it. Since I'm new to this I probably didn't make the best use of words, so if something doesn't make sense please let me know. Thanks and sorry for my ignorance.
The answer to this depends on the level of sophistication that you need in your display simulation. Computer graphics is ultimately a simulation of the transport of light; that simulation can be as sophisticated as calculating the fraction of laser light deflected by particles in the atmosphere to the viewer's eyepoint, or as simple as drawing a line. Try out the cylinder effect and see if it works for your project. If you need something more sophisticated, look into shader programming (using Nvidia Cg, for example), and volumetric shading as you mentioned; also post-processing glow effects may be useful. For OpenGL, I believe there is a limit of 8? light sources in a scene, but you could conceivably work around this limit by doing your own shading logic.
Well if it's just for light show simulations I'd imagine your going to need a lot of custom lighting effects - so regardless if you decide to use XNA or straight DirectX your best bet would be to start by learning shader languages and how to program various lighting effects using them. Once you can reproduce the type of laser lighting you want, then you can experiment with the polygons you want to use to represent the lasers. (I've used the cylinder method in some of my work for personal purposes, but I'm not sure how well straight cylinders will fit your purpose).
Although its faster, I think its best not to use vanilla hardware lighting because of its limitations. Pixel shaders can help with you task. Also you may want to chose OpenGL because of portability and its clarity in rendering methods. I worked on Direct3D for several years before switching to OpenGL. OpenGL functions and states are easier to learn and rendering methods (like multi-pass rendering) is a lot clear. If you like to code on C# (which I dont recommend for these tasks), you can use CsGL library to access OpenGL functions.