by QiQi Yan


QRay is an interactive 3D modelling system developed in Java with a built-in real-time raytracing engine. A unique representation model and a ray eliminating optimization method are implemented, which empower QRay to provide cool WYSIWYG 3D modelling functionalities.


In QRay, the Quadric Constructive Solid Geometry representation model is defined and implemented. Unlike the general CSG framework, in QRay, all primitives like balls, boxes, cylinders and cones are defined as the intersection of Quadric Half-spaces, which are defined as { <x, y, z> | QAxx+QBxy+QCxz+QDx+QEyy+QFyz+QGy+QHzz+QIz+QJ <=0 }, the basic building elements of a 3D scene. Such simple, precise and unified representation helps a lot in the development of an efficient rendering algorithm and makes it possible for users to define their own primitives.

Besides, the Seed-Fill optimization method is developed to accelerate the raytracing process. The seed-fill method optimizes raytracing rendering by starting to trace from previously known object-intersecting rays and render each object in a seed-fill manner. The computation is thus eliminated for rays that could never intersect with any object, leading to great speed up. Experiments show that the seed-fill method is so effective that realtime raytracing rendering becomes feasible.

QRay is a 3D modelling system. Enabled by the realtime raytracing engine, users directly see raytracing rendered scenes rather than abstract wireframes. Such WYSIWYG feature, together with the boolean operation supported by the CSG framework, makes 3D modelling an intuitive and fun work.

QRay is developed in Java. As speed is the most concern for realtime rendering, it is written very carefully, eliminating any repetitive memory allocation. Compared to it's C++ prototype, it's slower by only about 50 to 100 percent, which is acceptable.

QRay is Open Sourced under The GNU General Public License (GPL). I would be extremely happy if QRay could be helpful for people developing their 3D applications.

Java Applet

If you have J2SDK 1.4 or newer installed with explorer plug-ins. You can click at the following link to start QRay immediately!
Start QRay now!


In case you cannot start the java applet, here some screenshots are provided. (these screenshots are obtained on a PIII667MHz computer)

The use of primitives:

Boolean operation:

Mapping and reflection:

Optical refraction:

Download (with source code)

As an open source project, QRay is hosted at SourceForge.net. Click at the following link to find the newest releases and source code files.


My name is QiQi Yan. I am an undergraduate student in Shanghai JiaoTong University, department of Computer Science and Engineering. I am interested in various fields of computer science, including Artificial Intelligence, Natural Language, Computer Graphics, Data Structure and Basic Algorithms and etc. If you have any question or suggestion about QRay or anything else, please feel free to contact me at qiqiyan@thinkingsoft.com.

SourceForge.net Logo