In this paper, we present an object-oriented design and implementation for ray tracing on a virtual distributed computing environment called Dove (Distributed Object based Virtual computing Environment). Dove consists of distributed objects which interact with one another via method invocation. It appears to user logically as a single parallel computer for a set of heterogeneous hosts connected by a network, and provides high performance via efficient implementation of parallelism, heterogeneity, portability, scalability and fault tolerance. We shall show that ray tracing software can be implemented and maintained in a distributed environment with ease and efficiency by providing three abstract classes: TaskManager, Tracer and ObjectStorage. TaskManager schedules the assignment of pixels to Tracer which in turn renders them. ObjectStorage receives a ray from Tracer and returns the nearest object-ray intersection. We shall show that various ray tracing algorithm can be built up by the design of subclasses for TaskManager which incorporate centralized/decentralized task scheduling and dynamic/static load balancing schemes respectively. We provide users with flexibility by the design of ObjectStorage with various subclasses for storing objects from simple array to complicated structures like hierarchical bounding volume, octree or regular grid of voxels. Moreover, ObjectStorage can be distributed either by replication or by partition, and partitioned one maintains a cache for storing objects to reduce communication overheads. We shall show that user can easily build up a distributed ray-tracing software with different mechanisms by minimal modifications using the proposed classes.