There's no direct support for this. It would look ugly anyway, because you want to highlight the edges of the geometry but a wireframe would hightlight the edges of the triangles, so you would end up getting lines everywhere inside your geometry. You can solve this task in a rather clumsly by using Polylines. For that, you have to create two "objects". One is the normal Object3D and one is a simplified egde object in form of a Polyline instance. This is an example:
import java.awt.Color;
import org.lwjgl.opengl.Display;
import com.threed.jpct.Camera;
import com.threed.jpct.FrameBuffer;
import com.threed.jpct.IRenderer;
import com.threed.jpct.Object3D;
import com.threed.jpct.Polyline;
import com.threed.jpct.SimpleVector;
import com.threed.jpct.World;
import com.threed.jpct.util.ExtendedPrimitives;
import com.threed.jpct.util.Light;
public class PolyCube {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
FrameBuffer buffer = new FrameBuffer(1024, 768, FrameBuffer.SAMPLINGMODE_GL_AA_4X);
buffer.disableRenderer(IRenderer.RENDERER_SOFTWARE);
buffer.enableRenderer(IRenderer.RENDERER_OPENGL);
World world = new World();
Object3D obj = ExtendedPrimitives.createCube(10);
world.addObject(obj);
World linesWorld = new World();
Light light = new Light(world);
light.setAttenuation(-1);
light.setPosition(new SimpleVector(100, 100, 0));
light.setIntensity(255, 0, 0);
obj.build();
obj.compile();
float d = 5.2f;
SimpleVector[] sv = new SimpleVector[5];
sv[0] = new SimpleVector(-d, -d, d);
sv[1] = new SimpleVector(d, -d, d);
sv[2] = new SimpleVector(d, d, d);
sv[3] = new SimpleVector(-d, d, d);
sv[4] = new SimpleVector(-d, -d, d);
Polyline lines = new Polyline(sv, Color.WHITE);
lines.setParent(obj);
lines.setWidth(10);
linesWorld.addPolyline(lines);
sv = new SimpleVector[5];
sv[0] = new SimpleVector(-d, -d, -d);
sv[1] = new SimpleVector(d, -d, -d);
sv[2] = new SimpleVector(d, d, -d);
sv[3] = new SimpleVector(-d, d, -d);
sv[4] = new SimpleVector(-d, -d, -d);
lines = new Polyline(sv, Color.WHITE);
lines.setParent(obj);
lines.setWidth(10);
linesWorld.addPolyline(lines);
sv = new SimpleVector[5];
sv[0] = new SimpleVector(-d, -d, d);
sv[1] = new SimpleVector(-d, -d, -d);
sv[2] = new SimpleVector(-d, d, -d);
sv[3] = new SimpleVector(-d, d, d);
sv[4] = new SimpleVector(-d, -d, d);
lines = new Polyline(sv, Color.WHITE);
lines.setParent(obj);
lines.setWidth(10);
linesWorld.addPolyline(lines);
sv = new SimpleVector[5];
sv[0] = new SimpleVector(d, -d, d);
sv[1] = new SimpleVector(d, -d, -d);
sv[2] = new SimpleVector(d, d, -d);
sv[3] = new SimpleVector(d, d, d);
sv[4] = new SimpleVector(d, -d, d);
lines = new Polyline(sv, Color.WHITE);
lines.setParent(obj);
lines.setWidth(10);
linesWorld.addPolyline(lines);
linesWorld.setCameraTo(world.getCamera());
world.getCamera().moveCamera(Camera.CAMERA_MOVEOUT, 50);
while (!buffer.isInitialized()) {
Thread.sleep(100);
}
while (!Display.isCloseRequested()) {
buffer.clear(Color.BLACK);
world.renderScene(buffer);
world.draw(buffer);
linesWorld.renderScene(buffer);
linesWorld.draw(buffer);
buffer.update();
buffer.displayGLOnly();
obj.rotateX(0.01f);
obj.rotateY(0.01f);
}
}
}