Skip to content

Interactive 3D: How Do We Get There?

ADMIN | 10-09-2013

As a developer for 3D ACIS Modeler, I spend a lot of time thinking about how to make 3D ACIS Modeler faster and, at the same time, more correct.

Hexagon pattern 1

Basically, there are two priorities when using a software component, particularly a 3D modeling kernel:

  • Does it do what you want/need it to?
  • Is it always fast enough to be practical?Brain_Things

As a developer for 3D ACIS Modeler, I spend a lot of time thinking about how to make 3D ACIS Modeler faster and, at the same time, more correct.  Conventional wisdom often laughs at people who try to compromise correctness for speed: if there is a mathematically right answer, that’s always what you should get. 

On the other hand, there is a point where if an operation is too slow it is useless.  For example, a faceting algorithm that took 2 hours to facet a sphere would be pretty much useless.  Interactive applications push this idea even further.  If you want to call an API every time the end user drags their mouse on the screen, the API speed limits your frame rate.  To achieve 10 fps, you need the API to take less time that .1 sec.  With the computer power that is available today, there are some amazing things CAD applications can do (e.g., the pull operation in SpaceClaim Corporation).  ACIS is driven by our customers.  This blog was prompted by a project Matthias and I are doing in R25 to make entity-entity distance interactive.

So how can we make 3d more interactive?  I have a couple of ideas, but I’d love to hear yours as well:

  • The basic algorithms  need to be optimal
  • Nothing O(n-squared) or worse unless it is impossible to avoid it.
  • Is there any costly work being done repeatedly?
  • Ask the right questions.
  • If you can get by with less work per mouse move, do.
  • Pre-compute/memorize if possible.
  • Multithread whatever slows you down.
  • Avoid static and global variables whenever possible.
  • Take advantage of Thread-safe ACIS.
  • Optimize greedily
  • Profile to find what the bottlenecks are, and focus attention there
  • Program lazily
  • The more an operation costs, the more can be gained by doing it opportunistically, instead of doing it all the time.

You might also like...

c138_2_cropped
3 Min read
3D ACIS
We often focus the success of new partners, showcasing how Spatial helped with bringing a new product to market. But...
Large Tolerant  Vertex
3 Min read
3D Software Development Kits
boolean operation Boolean operations on individual bodies are common functions in 3D modeling. While simple in concept,...
3 Min read
3D Software Development Kits
In much the same way as physical design has moved from paper 2D drawings to 3D models in software, so has analysis....
4 Min read
3D InterOp
Part and parcel with model-based engineering is model translation. Because the model is now the specification, accurate...
4 Min read
3D ACIS
We are moving things around in the office here at Spatial to accommodate some new people. As a result, our marketing...
2 Min read
3D ACIS
This article shares a simple architecture which can be used to capture meta-data about the use of ACIS APIs in your...
1 Min read
3D ACIS
How To Create an Ellipsoid using 3D ACIS The 3D analytics supported directly in 3D ACIS include: sphere, block,...
2 Min read
3D ACIS
Basically, there are two priorities when using a software component, particularly a 3D modeling kernel: Does it do what...
1 Min read
3D ACIS
A geometry kernel is a big thing. It’s a huge thing. Maybe even big enough to see from space. By most accounts, even...
1 Min read
3D ACIS
My comrades and I did a performance analysis of Intel’s Hyper Threading Technology (HTT), using thread-safe ACIS and...
3 Min read
3D ACIS
In earlier posts I’ve written a lot about the various approaches to multiprocessing and the potential benefits. What I...
2 Min read
3D ACIS
The challenges of a major software release are not unique to Spatial. And like other organizations, the launch process...
5 Min read
3D ACIS
We’ve known for a long time that the integrity of B-rep data plays a major role in the success of downstream modeling...
3 Min read
3D ACIS
Answer: when it’s a 'HappyPathPoint'.
1 Min read
3D ACIS
To finish up this series of posts; what Gregg's post described happened a few years ago. Since that first team room,...
4 Min read
3D ACIS
This post will discuss two aspects of my favorite programming language, C++:
2 Min read
3D ACIS
Way back in the Dark Ages of the mid-90s, I used to read a newsgroup called comp.lang.c++. You can tell this was the...
7 Min read
3D ACIS
Here’s a subject to which everyone can relate in one way or another: growable arrays. An array is a contiguous memory...