1

I want to visualize the intersection of some 3D objects: cubes, boxes, cylinders, parallelpiped etc., and in particular - show the intersecting faces from the perspective of some viewer/camera, without complete occlusion, i.e. with some sort of semi-transparency.

Also, in the 3D scene, there may be a bunch of surrounding objects which might interfere with the view (for example: I have a 4x4x4 grid of cubes, close together, and a ball at the middle of this cube, and I want to see the faces of the intersections of the ball and the central cubes). So, it's important for me to have some control over what is currently made invisible or almost-invisible.

Required features:

  • Price under $100 USD.
  • Not a huge number of actions to achieve the above.
  • Works either on x86_64 Linux or on x86_64 Windows

Desired features:

  • Gratis
  • Libre
  • Works on both x86_64 Linux and x86_64 Windows
  • Intuitive to use (e.g. at the level of LibreOffice Draw or Visio, and more intuitive than Inkscape - although every person's intuition is different, so obviously this is a fuzzy requirement)
  • Easy export to 2D raster image formats (e.g. PNG)
  • Easy export to 2D vector image formats (SVG ?)
  • Some kind of "snap to grid" feature
  • Ability to manipulate objects in isometric views
  • Ability to view and manipulate objects in 2D-projected views along the different axes.

Note: I have basically zero experience with modeling/3D software, so don't hesitate to suggest something which might seem "obvious" to you.

2
  • To clarify, are you seeking recommendations for software that works on either Linux or Windows, but prefer software that will work on both? Mar 1, 2022 at 10:22
  • 1
    @RockPaperLz-MaskitorCasket: Yes, exactly.
    – einpoklum
    Mar 1, 2022 at 11:50

1 Answer 1

1

With OpenSCAD, you may be able to accomplish your objective. It's free, works on Linux and Windows. Intuitive to use? I'm not a programmer but can manage the logical thinking process required to create the code to present objects in the manner you describe.

The opening page shows a complex object with transparency, which is created with a # character before the line containing the code to create the object.

openscad home page

The image below, created as I typed this answer is a fairly crude bit of code that may represent part of your goal. It also is the export of the PNG file, another aspect of your question:

sphere and cubes

One can also create a boolean subtraction and remove the sphere (as an example) leaving the cubes with the applicable portions removed.

cubes minus sphere

Keeping in mind that I'm not a programmer, and I'm certain the code below can be compressed/condensed/optimized, I slapped this out at the speed of typing:

$fn = 90;
// the below segment could be optimized with loop
module cubes(){
    cube(4, center = true);
    translate([10, 0, 0])
    cube(4, center = true);
    translate([0, 10, 0])
    cube(4, center = true);
    translate([10, 10, 0])
    cube(4, center = true);
    translate([0, 0, 10])
    cube(4, center = true);
    translate([10, 0, 10])
    cube(4, center = true);
    translate([0, 10, 10])
    cube(4, center = true);
    translate([10, 10, 10])
    cube(4, center = true);
}
difference(){
    cubes();
    translate([5, 5, 5])
    sphere(8);
}

As with any project, one proceeds in a linear fashion. The code represents thinking about placing cubes; where, how large, followed by making a sphere, placing it appropriately, subtracting one set from another.

Another aspect of OpenSCAD is that it is parametric. For sloppy coding (see above), one uses values. For parametric coding, one uses assignments, which resemble variables but are not variables.

5
  • 1
    So, you have to write a program to get an object?
    – einpoklum
    Mar 1, 2022 at 10:10
  • ... that does not seem very intuitive.
    – einpoklum
    Mar 1, 2022 at 11:53
  • The aspect of being intuitive is a subjective consideration, in my opinion. One does write code, but it's more of a descriptive language with programming options. See edit.
    – fred_dot_u
    Mar 1, 2022 at 16:50
  • Ok, that's not so bad at all! +1 from me. Although... I guess you can't manipulate the objects created using the GUI (e.g. drag them, or hide something to better see what's behind it etc)?
    – einpoklum
    Mar 1, 2022 at 17:37
  • 1
    It is possible to create code involving a time related assignment, which allows the animation feature of the program to adjust movement of objects (translate, rotate) and/or camera movement. It is not interactive and there isn't really a GUI, other than to preview and render the objects.
    – fred_dot_u
    Mar 1, 2022 at 20:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.