The purpose of this GDImage 5.06+
project, is to provide an easy (and reliable) way to perform face detection
on a 3D rotating cube, using the mouse to pickup a specific picture.
" is the usual way of doing things in 3D's world. I have taken another approach because what i wanted to do was to select a specific face of the cube, and not the whole cube itself.
"Picking" is based on the depth detection of an object, but In the case of a rotating cube it could not be used, because very often two or three faces are just in front of the camera, meaning each of the face is exactly at the same distance from the camera.
The solution i have used to solve this problem is named "color detection
When i am in HitDetection
mode, instead of mapping the textures on each face of the cube i am using a unique color for each of the face. Then i just have to check the color of the pixel located at the mouse coordinates to figure the real face that has been selected.
SUB DrawCube (BYVAL HitDetection AS LONG)Screen shot:How to use "The Cube":
IF HitDetection THEN CALL glColor4ub(0,0,1,255)
IF HitDetection THEN CALL glColor4ub(0,0,2,255)
IF HitDetection THEN CALL glColor4ub(0,0,3,255)
IF HitDetection THEN CALL glColor4ub(0,0,4,255)
IF HitDetection THEN CALL glColor4ub(0,0,5,255)
IF HitDetection THEN CALL glColor4ub(0,0,6,255)
- Click or double click with the left mouse button on a cube's face. The selected picture become the new background, while loading a new image.
- You can also use the left mouse button to drag the cube to another location.
- Using a right mouse button click, allows you to select a new folder (with more than 6 pictures) to populate the cube faces with new images.
This project could be a good candidate to create a true VISTA's widget to change the desktop wallpaper.Note:
Because of the use of 3D, you must have a graphic card that is OpenGL 2.00+ compatible.