Existe una API de JAVA 3D pero es bastante limitada, ya que java no es un lenguaje orientado a eso.
A la hora de desarrollar juegos de ese tipo normalmente se recurre a lenguajes compilados, como c++, por el tema del rendimiento.
Además te recomindo que utilices un motor 3d por que sino el volumen de trabajo es enorme.
Yo estoy desarrollando un juego tipo quake con un motor llamado TrueVision 3D y c# (que a pesar de no ser compilado me va genial). El motor gráfico te da opciones como cargar modelos 3d, cargar mapas, ayadir musica y sonidos, icluir IA, etc. Si tuvieras que hacerlo todo sería una locura. Yo con menos de 1000 lineas de código he conseguido cargar un mapa 3d con luces y sombras, una banda sonora, un personaje que puedes mover por el mapa y un enemigo que se mueve solo. Todo ello con animaciones. Ademas puedes cargar mapas y modelos de otros juegos como Half life, que para empezar a hacer pruebas va muy bien.
Bueno, espero que te haya orientado un poco