You know... f you have a SOLID library to write on a 2d surface, and can do both Vector and Raster Graphics.. making a 3d engine from scratch is not as hard as learning DirectX IMHO.
Making a JAVA 3d engine of your own is probably very doable, and making an ActiveX control that just manipulates a "bitmap" in memory to make some lightweight 3d engine for an online oop like runescape is very doable.
I'm basing this on ... well.. back in 1995 I had a book (wish I never lost it) on how to do 3d programming in "C" (NOT C++).
And basically it starts out making RGBA type plotting, draw line, circles, fill circle, squares, fill squares.. triangles, fill triangles.. then it moved on to drawing with vector graphics.... where you draw using floats like we do in 3d.... not pixel based .. but in this book it was about 2d space first. Then attention shifted to triangles.. And then it was about taking the 2d vactor stuff and adding one more compoent... "Z" to your X,Y stuff...
The Z controled the order things were drawn... then it went to Z Order Created from a Camera "view, calcing a frustrum view. and drawing a 3d cube or something... memory gets fuzzy here.. but I do remember it wasn't NEARLY as hard as I had first though it would me.
The book was published in London England - this I remember.. need to get another copy. Sometimes going back to your roots can help you get the more complicated stuff..