3D++ Design Rotations Cloud
Ray tracing
Texture mapping
Magic Cube + 'Daisy'
hopades clicks
Freiburg
Germany


siegfried@dispair.eu
   
   
 
   

           
   
           

 

       



Videos
 
 


 
 



 
 



 
 




 
 

       

 


Instructions

 

Introduction
 
 
  Thank you for your interest in this app, which is now available in the initial version with these initial highlights:
  • cross-user and cross-device project data backup in a cloud
  • any complex rotation dependencies between objects can be set and displayed
and in December 2020 also in an extended version with these additional highlights:
  • local project data backup on your device
  • image generation via 'Ray tracing' of a project scene
By backing up 3D++ project data in a cloud, projects can be edited together with friends and across multiple devices. On the basis of a cloud, project content can also be shared and exchanged, so that there is the possibility of a rapidly growing object library.

In order to have a common geometric orientation, it is proposed to interpret a geometric unit (Pixel on the screen) as 1 cm in the first approach, even if the size of project content can be changed in this app.

The start screen explains the operating scheme for editing and displaying all 3D++ projects:

 

  ¹)

  This means that this division always applies to project processing, even if it is no longer visible there. Clicking on a screen area in the start screen gives you further information about this area.

 
       

Projects
 
 
  Project processing is started via the screen areas 'Projects' and 'Bodies' (3D++ synonym for 'Objects'):

 
 

  ¹)

  ¹)

 
  Each project has a project name and a project owner when it is saved in the cloud. The project owner must be a valid email address for communication and support purposes, which will be verified by 3D++. A read and a write password must be assigned for each project.

Each project has a certain size depending on the data volume. 3D++ tracks this size with a view to the underlying hardware and for billing reasons and limits the data volume to a fixed size, which is currently 2 MB per project.

Via the 'Open Source' checkbox you can make the content of your project available to the general public. In return, you can then view and copy objects from the library of 'Open Source' objects of other 3D++ users put together by the app developer.

The 'read' and 'save' ²) push buttons are self-explanatory and target the cloud or the local storage.

The 'more' and 'delete' push buttons also target the cloud or the local storage, with 'more' relating to the cloud, all projects for the entered email address plus representative sample projects are listed for demonstration purposes.

The 'save' ³) and 'delete' push buttons relating to the cloud are only offered if the data protection declaration and the use of the Google account ID have been explicitly accepted. For local storage these push buttons are always offered.

In the first step, relating to the cloud 3D++ only marks 'deleted' projects for deletion in order to be able to evaluate the project, for example if the 'Open Source' flag is set. If, for example, you want to reduce your total cloud storage volume for billing purposes and really want to physically delete a project, you can save this project without project content as long as it has not yet been marked as deleted.

The 'emergency unlock' ²) appears if, for whatever reason, something went wrong while saving or reading a project to or from the cloud. This project can then be unlocked explicitly if both passwords are correct. If necessary, cross-user project access ³) must be taken into account. After a short wait, the project is unlocked.

 
       

Bodies
     
 

  ¹)

  ¹)

 
  Every body has a name and a geometric center. 3D++ works with a right-handed Cartesian coordinate system, in which the X-axis points positively to the right, the Y-axis points positively forwards and the Z-axis points positively upwards.

 
  For technical reasons (no entry of minus values), 3D++ works exclusively in the octant with positive X, Y and Z values, so that a body center point is entered in this order:

 
 

 
  Please choose the center of the project or scene with a view to the overall scene sufficiently far in the positive range of all three axes ('triple positive' octant I), so that a body center point never lands in one of the seven other octants with at least one negative axis value. 3D++ always creates its focus in the octant IV with the negative Y axis in such a way that it always corresponds to the project or scene center on the XZ plane. That is why your project is always shown in the middle of the screen.

3D++ is a 'rotation-oriented' 3D application. That is why 3D++ always works with body centers with a view to the intrinsic rotation of a body.

For the same reason, body dimensions (width, depth or length, height) are entered as deltas (half width, half depth, half height) so that the center point orientation is retained here as well.

The order of entering deltas corresponds in terms of coordinates to the order of entering the center point values.

For bodies that are not defined on the basis of a cuboid, the 'deltas' input fields are redefined and reinterpreted in a suitable manner. More on that later.

3D++ enlarges or reduces the display of your project scene by appropriately moving the virtual viewpoint or eye point and the virtual XZ projection surface within the program on the Y coordinate before the scene is transformed onto the real screen.

Although fractions are also possible for entering geometric values, for technical reasons you can only enter the point with a decimal separator if you first enter a very large value for it. 3D++ thus prevents a program crash in the current implementation if more than one decimal separator is entered. For the same reason, it is not possible to enter negative values.

3D++ designates the angles of rotations around a fixed Y and Z value (rotation 'around the X axis' or around this fixed 'YZ value') as U, around a fixed X and Z value (rotation 'around the Y axis') as V and around a fixed X and Y value (rotation 'around the Z axis') as W. Rotation angles are always entered in degrees (°) and not as radians (with base π). In the input masks ('mask' synonymous with the input screen), U, V and W are referred to as u, v and w, just like in 3D++ X, Y and Z are called x, y and z.

A positive angle is always to be seen in such a way that it means a clockwise rotation when the axis points positively into the distance.

The order of entering angles of rotation corresponds with respect to the coordinates with the order of entering the center point values.

As with point coordinates, you cannot enter any negative values ​​or decimal separators for program-related reasons. You can 're'generate the decimal separator by entering a sufficiently large value.

You enter negative angles (counterclockwise rotation with respect to an axis that points positively into the distance) by entering the value 360 ​​° reduced by your angle value.

An angle entry in the 'Body dialog' mask specifies the starting orientation of a body, which is saved locally or in the cloud and can only be renewed when a body is copied or a body is regenerated.

You may have to enter a rotation sequence for your 'angle trio' (more than one angle not equal to 0), because a body rotation first for example by angle U and then by angle V produces a different result than a rotation first by V and then by U with otherwise the same angle values.

If you enter one of the six values ​​for the maximum of six possible rotation sequences, the corresponding rotation sequence is displayed to the right of your input value.

 
  The above explanations for the body dialog mask apply to the four cuboid types. For all other body types, the deltas are modified or reinterpreted and, above all, two other parameters are brought into play: the horizontal division in the XY plane and the vertical division in the Z direction. It is hoped that the explanations are self-explanatory or otherwise reference is made to the tutorials, also with regard to another parameter: the number of reduced layers for the globe or the number of reduced discs for the torus.

It is only stated here that the two-dimensional 'tile body' only requires two expansion values, the torus type also only the two radii and the globe type only one radius.

 
       

Sculptures
     
  The two lower 'sculpture types' require a number of value pairs that depend on the division in the Z direction. Again, the reference to the tutorials and only the note that the sign of the Z value, which indicates how far a pair of values ​​lies above or below the body center of the Z direction, can be changed from Plus to Minus and vice versa with a click.

 
  Since several versions 3D++ offers a graphical 'Sculpture Editor'.

This is accessed via the 'Body' dialog.

After assigning a name and entering the geometric center of the body, you can immediately select the globe as a pattern.

This selection allows the horizontal and vertical divisions to be entered.

It is not necessary to enter a radius because the radii of the individual rotation planes are set individually.

This documentation shows the complete process of creating a round body based on the globus type.

Creating a round body based on the torus type is largely analogous.

¹)

 
 

After clicking on the glass, the coordinates (Z-height of the plane on the right and assigned plane radius on the left) are first calculated for a globe.

A second click on the glass opens the 'Sculpture Editor'.

¹)

 
  The contour of the round body can now be set roughly here.

Only the proportions of the individual level divisions have to be graphically edited as desired.

The resolution of the screen corresponds to the resolution of your device and is independent of a global radius entry.

This is possible because the final dimension of a body can be scaled at any time via the 'Select' dialog.

 
 

 
  Via the 'Back' button, the Text Editor appears again with modified Z planes and plane radii.

This information can be fine-tuned here and optically checked by clicking on the glass again.

 
 

¹)

 
       


Polygons
     
  The graphical polygon editor is a copy of the graphical sculpture editor, so that essential statements about the graphical sculpture editor also apply to the graphical polygon editor. The only external difference is the lack of a visual indication of a later body extension by rotation, as indicated by a light blue area in the graphical sculpture editor. The base 'circle' of a torus sculpture corresponds to a closed polygon.

All graphic editors can only serve these two purposes due to the lack of geometric precision of finger touch and movement on the touch screen:

  • rough initial draft of a contour
  • visualization of a contour
 
   
 
 
 
  The second point in the list above indicates that the 'fine-tuning' of a contour is only possible in 'text mode'. The 'text editor' for this is the list of polygon points in the body dialog.  
 
 
 
 
 
  The two-dimensional coordinates of the polygon points are only relevant with regard to their proportions among each other. Therefore, they can be enlarged or reduced proportionally, as the graphic editors allow. Its final position (center point) can be set via the separate body modification dialog. This also applies to the size of the bodies created with it.  
 
 
 
 
         
 
 
 
  Starting with 3D++ version 4.0.0, there is an SQLite table for storing generated sculptures and polygons, especially because complex contours require a considerable amount of time to create. With this local storage option, such contours can now be created step by step and revised at any time.

If a contour name is clicked, it appears in the dialog at the top in the field for the body name and in parallel the 'division' of the contour is initialized (0 for torus sculptures, globe sculptures without the reduction of two globe layers and polygons and 1 for the globe type with the reduction by 2 layers). Without entering a body name, a contour cannot be read or saved. For storage, visibility of a points list is also required.

 
 
 
 
   
       

Changes
     
  For changes to a body, this must be selected (red marking). This is done by a first click on the screen area for changes, a second click on the body to be selected and at the same time the body area to be selected, a third click on the screen to make the selection visible, and a fourth click on the screen area for Body changes to call up the mask for the change dialog:

 
 

  ¹)

  ¹)

 
  As far as the contents of this mask are not self-explanatory, here are the notes:

The RGB color values ​​are captured by one byte (8 bits) per color (red, green, blue), which amounts to a range of values ​​from 0 to 255 (2⁸-1) per basic color. The same applies to the fourth color value, the alpha, which stands for the degree of transparency of a RGB color. Regardless of its setting (255 for totally transparent), this field shows you the RGB result color resulting from your first three settings.

 
  The area color of the tile 'bottom left' is adopted from around half of all tiles according to this pattern:

The color of the other tiles is assigned via a body color. Nevertheless, each tile can alternatively have its own color.

If a texture is assigned to a tile, this texture also applies to all other tiles in that tile set. From version 4.5.3 onwards, what was said in the chapter 'Texture mapping' regarding first and second entries also applies to tiles.

As of 3D++ version 3.5.0, these rules regarding tile color also apply to the 'Ray tracing' parameters of a tile. *)

 

 
  Active interior ('inside') visibility is only useful for 'open' bodies (open globe and torus types or bodies with transparency settings for the body and/or selected body surfaces or the two-sided visibility of tiles), because an active interior visibility reduces the performance when displaying the entire scene. 3D++ then simply has to do a little more computing.

For the expansion of bodies, changes are redetermined and displayed by clicking on one of the three expansion values, which in the case of simple bodies, such as a cuboid, with additional simple alignment (no inclined position in space) amounts to the length, width and height. It simply shows the differences between the maximum and minimum values ​​of all three dimensions (X, Y and Z) of a body.

Of the six push buttons, these four may not be self-explanatory:

 
  'cancel' revokes the selection, 'copy' duplicates a body away from the current project or the current scene in order to use it again within the project or across projects via the ‘Copies' screen.

A copy of a body that is used again 'deletes' it from the pool of all current copies by merely reassembling the body within the program. In the case of a second copy, it must be copied again, that is, duplicated.

Body changes (for example the center of the body or the colors) for the purpose of a copy only affect the copy, the duplicate, not the original, which is only changed via 'change'.

'recall' and 'merge' correspond to each other. With 'recall' a body selection is held and outlined in blue. With 'merge' the currently selected body (with a red border) is fused with all previously held bodies, in that all held bodies lose their independence, i.e. their identity or existence, and thus also their individual properties such as body name, center point, body color values ​​and rotation settings. The last selected body inherits its individual properties to the 'adopted' bodies, which only pass on their body points and surfaces with their properties and point references to the 'absorbing' body.

In order to increase the sensitivity to body unions, 3D++ does not allow unions with differently set rotation dependencies in the current implementation because, for example, the ingesting body may be dependent on an ingested body, possibly only indirectly, in its 'externally determined' rotations.

Even if further individual properties of a body are to be preserved (for example light or color properties), no association should be carried out. On the other hand, with regard to 'Ray tracing', as many bodies as possible should be combined in order to minimize the amount of input of light properties from all bodies.

Bodies marked as 'recall' lose their reservation (blue border) via a new selection followed by 'cancel'.

Bodies that result from associations can become as complex as desired and automatically receive a new center with each 'inheritance': the center of the geometric maximum and minimum values ​​of all three axes or dimensions of all body points, i.e. including the 'inherited' body points. Combined bodies are treated as a single body, so they can (only) be copied and rotated in their entirety.

All bodies with independent rotation dependencies retain their independence.

The change of a body center has the obvious direct impact on all body points. This also applies to a change in body expansion, in which all body points are 'exploded' away from the body center (enlarging the body) or 'imploded' towards the body center (reducing the body size). This has to be taken into account when changing or copying a body. The center of a body can also be used to temporarily reposition this body if it hinders the selection of another body.

 
       

Ray tracing
     
 

  ¹)

  ¹)

 
  The 'Ray tracing' function is new from 3D++ version 3.0.0. It is based on these 9 parameters: ambient light, body colors, body parameters for the reproduction of ambient light, reflected light, transparent light together with a refractive index and its own color, light color and light placement.

In this context, light and color are synonymous terms. Both consist of special proportions of the three basic colors (RGB) red, green and blue.

In addition to the body's own basic color (set in the change dialog for a body), a body has these four properties:

 
 
how strongly does the body color react to the ambient lighthow strongly does the body reflect directly incident light
how much light can the body let through (transparency)how high is the proportion of your own color in the result light

 
  These 'Ray tracing' features are also available as of 3D++ version 3.5.0:
  • Each project is presented on a 'stage' with preset light sources.
  • Individual colors and 'Ray tracing' parameters can be set for each surface of a body. *)
 
 

  ¹)

 
 

The 'Ray tracing' depth affects the transparent and reflective color components of the resulting color of a point on the body. It defines the number of stages over which transparent and/or reflective color components of a point on the body are traced over other bodies.

 
 
'Ray tracing' can be tested via the cloud projects
  • 3D4U: Gondel unmerged
  • 3D4U Cubes: little complex Rotations
  • 3D4U Ferris Wheel Triangle
  • 3D4U: Spindel und Speichen
  • 3D4U: Carousel (Wave riding) merged
  • 3D4U Rings: complex Area Coverage
  • 3D4U: Multi polygon ball
 
       

Texture mapping
     
  With 3D++ version 4.2.0, 'Ray tracing' was extended to include the 'Texture mapping' function. This allows any surface to be covered with images or patterns using 'Ray tracing'. The position, orientation and shape of the surface are arbitrary.

These images or patterns are provided by the user and assigned to an area in the change dialog. The user must grant permission to access these files.

Of course, an image or pattern can be used multiple times during 'Ray tracing' without requiring any additional internal app memory.

   

 
 
The name of an image or pattern file, including the file type, may not exceed 30 characters in length. The following four file types are possible: '.jpg', '.jpeg', '.png' and from version 4.2.5 onwards '.gif'. The file type is part of the file name. From version 4.2.8 onwards, textures with an alpha channel (i.e., possibly with transparency) can also be processed. The files can be located in these folders:
  • /storage/emulated/0/Download/
  • /storage/emulated/0/Pictures/
  • /storage/emulated/0/Pictures/.thumbnails/
  • /storage/emulated/0/DCIM/Screenshots/
  • /storage/emulated/0/DCIM/Camera/
  • /storage/emulated/0/DCIM/.thumbnails/
I got the names of these directories from a Bluetooth app. These correspond to the names you see in the default app for viewing your images.

Texture filenames assigned to an area are now also stored in the cloud, not just in the local app database. It should be noted that the source for textures is currently only the images and patterns of a user on their device. The textures would also need to be present on a second device (possibly via Bluetooth transfer with verification of the filename).

An image or pattern can be prepared for 'Texture mapping' via a standard app on a device (for example, 'Gallery') (filename and, if applicable, width and height).

 
     
    'Texture mapping' represents a significant functional and 'artistic' enhancement of the 3D++ app. It gives your artistic and creative ambitions considerably more 'room to maneuver'.  


     
 
The 'turn over points list' checkbox has the following meaning: the orientation of a surface depends on the rotation sequence of its corner points. The normal vector and visibility (in 'surface rendering' or for a ray in 'Ray tracing') then depend on this orientation. In 3D++, surfaces are defined 'counterclockwise' with respect to their vertices. The basis for this is the coordinate system described in the chapter 'Bodies'.

The remaining fields (ARGB values, 'Ray tracing' parameters) only apply if the sum of the RGB values ​​is not equal to 0 or if a file has been entered for 'Texture mapping' in 'Ray tracing'. This information is then essentially a specialization in competition with the 'global' body values ​​as defined in the change and 'Ray tracing' dialogs. This needs to be considered in the 'Ray tracing' dialogue.

This means, in particular, that the 'Ray tracing' parameters (ambient light, diffuse reflection, specular reflection, transparency) of the surface also apply in 'Texture mapping'.

 

 

 
From version 4.5.3 onwards, the initial entry of any body surface is also adopted by all other surfaces of a body. This makes it easier to 'Texture mapping' of bodies with many surfaces. This allows, for example, the edges of a body to be given a metallic sheen.

A second entry for a surface gives that surface an individual 'Texture mapping' that is not inherited by other surfaces.

All surfaces of a body can be reinitialized with the entry 'X.png' of any surface, so that a further entry has the effect of an initial entry.

 
       

Magic Cube
 
 
  During December 2025, 'Rubik's Cube' will be offered within the 3D++ app. This was a logical step because 3D++ is adept at handling complex rotations.

The following image explains which cubes to press to rotate a specific layer of cubes.

Clicking one of the three middle cubes causes a 180° rotation, while clicking the other 24 cubes causes a 90° rotation. The direction of rotation always follows the intuitive direction of the click.

 

 

  To practice solving the 'Magic Cube', you need to download the '3D4U Cubing' project from the cloud and optionally save it locally under the same name. This project was expanded on January 10, 2026.

ATTENTION: local saving must be done immediately after loading from the cloud, i.e., before the initial rotation sequence is triggered by clicking on the center of the screen.

'3D4U Cubing' is a special form of a 3D++ project in which 'geographic functionalities' and these dialogs are deactivated:

  • Body types
  • Copies
  • Ray tracing
  • Rotations
  • Changes
and these dialogues can still be activated:
  • Projects
  • Basics
  • show the last calculated 'Ray tracing' image
The implemented 'Daisy' algorithm solves every initial configuration of the 'Magic Cube'. Each initial configuration is dynamically generated in this app using a random generator.

I like to call the intermediate stages of the overall solution 'Daisy', 'May wreath' or, better in German: 'Maikranz', 'Arctic', 'Double bottom' or 'Cake', 'Yellow cross', 'Desert' (yellow area), 'Target cube'.

The algorithm consists of approximately 12 movement patterns.

 
       

Footnotes
 

¹) The font size is automatically minimized when working with 3D++ so that the area designations of the start screen or dialog contents are completely visible and do not appear optically cut off.

²) Recommendation for secure conservation of project data: it is best practice to backup an identical duplicate for every project as soon as possible, at the latest when a project has already been created with a lot of effort. In this way, a second version is always a fallback solution under the control of the user, should something go wrong when saving. Therefore, the backup processes for the first and second version should not overlap temporally.
Caution: local project data will be lost **) during a new installation and will remain there during a release update. For a new installation, the cloud can therefore be used for a project backup.

³) Recommendation for project work in a team via the cloud: not all team members should be able to independently secure a joint project, but an official project version should always be coordinated in the team. The best solution is probably a separate project version for each team member, if only with reduced project content.

*) The surface color and parameters only have an effect if the surface color is > 0 (Red+Green+Blue > 0). Otherwise, the body color and parameters apply to a surface.

**) for devices with an older Android version

 
       

 


Pageviews
           
 
  Recording start: July 2024  
 
           
  in time zone   Asia/Shanghai   260     2026-10-07 02:28:13  
  in time zone   Asia/Bangkok *)   1,841     2026-10-04 15:03:13  
  in time zone   America/Los_Angeles   562     2026-09-30 03:19:44  
  in time zone   UTC   79     2026-08-10 23:42:26  
  in time zone   Asia/Dubai   1     2026-08-08 23:25:48  
  in time zone   America/Mexico_City   1     2026-07-10 05:19:21  
  in time zone   Africa/Casablanca   1     2026-07-10 05:13:40  
  in time zone   Europe/Madrid   1     2026-06-14 20:21:57  
  in time zone   Asia/Saigon   1     2026-05-31 13:12:32  
  in time zone   America/Toronto   1     2026-05-28 07:16:11  
  in time zone   Europe/Moscow   1     2026-03-29 23:53:25  
  in time zone   Asia/Makassar   4     2026-03-25 03:38:04  
  in time zone   Europe/Bratislava   1     2026-03-14 17:01:07  
  in time zone   Asia/Calcutta   20     2026-03-10 07:19:11  
  in time zone   Asia/Manila   20     2026-03-03 11:52:33  
  in time zone   undefined   8     2026-02-22 06:59:11  
  in time zone   Etc/Unknown   6     2026-02-17 15:36:27  
  in time zone   America/Sao_Paulo   4     2026-02-14 19:11:25  
  in time zone   Europe/Kaliningrad   1     2026-02-13 14:10:24  
  in time zone   Europe/Dublin   1     2025-11-10 16:34:19  
  in time zone   Asia/Kuala_Lumpur   2     2025-11-02 08:39:16  
  in time zone   America/Vancouver   1     2025-09-14 18:55:02  
  in time zone   Europe/Berlin   1     2025-09-12 08:57:21  
  in time zone   Asia/Irkutsk   1     2025-08-02 08:20:25  
  in time zone   PST8PDT **)   17     2024-11-21 03:27:12  
  in time zone   Africa/Lagos   5     2024-10-29 01:34:28  
           
  *) this number is mainly due to testing activities        
  **) this number is mainly due to SEO activities        
           
           
 

 


hopades clicks

 

 

3D++ 3D Design

  
  

  
 
Freiburg im Breisgau
 

Germany

 
e-mail
apps + designhopades clicks
The only exception to the strict ban on advertising in 3D++:

  Shirizu
brain teaser classics
for all ages
 
 

(new version 3.3.9 from January 6, 2026)

original, addicting and highly comfortable Android brain teaser app, based on Mastermind, but with more complex rules of the game

and therefore particularly interesting for Sudoku and Chess players and all brain fitness friends.

Another new exception to the strict ban on advertising in 3D++:

  Mendel
genetics and heredity
 
 

(new version 2.0.7 from August 24, 2025)

Mendel's rules are an elementary part of science teaching at secondary schools.

This app gives you the opportunity to play these rules clearly, transparently and comprehensibly. You have the option of combining several characteristics and varying the type of inheritance.

Since Richard Dawkin's book 'The Selfish Gene', the mechanisms behind our genes have come more and more to the fore in the natural sciences and also in philosophy.

From version 2.0.0, access to my online book is integrated into this application.