I think there are some misconceptions about Java3d here. There is nothing in Java3d that can be considered a mistake or a bad design decision. You need to know the engine limitations, make some benchmarks to sound and graphics and design your game to stay bellow those limits.
So you like good lookings make your textures look good with 64 pixels wide, dont use too much textures. Its just a matter on how you do the textures.
For instance the last rock wall texture i made used an images of 512x512 pixels to work with the spray tools and all the other tools well. Also used three layers for: one for the rock texture, another for dirt and slime in the walls, another for deficiencies in the bricks; plus some other for give bright in some areas and relief to the bricks.
Finnaly the texture was shrinked to 64x64 pixels .png and it looks very good. I just avoid making simplistic tiles, these textures tile even if they are rotated at any angle. Tried it with a level but i need to had special textures with special corners, ceilling guides and floor guides for places where walls joins with ceillings and floors.
Sound is not good enough use midis not mp3 and sounds with a low sampling. Most sound cards with intruments banks and can play midi better than an mp3 and can also filter low sampled wavs to sound nicer.
OK you don’t have shadows or pixels shaders. Neither fallout or deusex or half-life or system shock or even thief. These are some of the greatest games that have been made and many people prefer them to some new games that are nothing more than visuals.
So you can’t use as much polygons as a C++ engine like Quake3 or Unreal2. This depends on the type of game you are doing. If it is a MMORPG the landscape must be very big. In that case use advanced lod techniques and benchmark the engine. If it is a dungeon crawl or a quake3 like game closed environment use lod to disable rooms that arent visible in the players proximity. Use different geometries for distance objects. Once the distance of an object from the player doubles you can lod it. Every polygon counts
Dont use brute force rendering with Java3D, thats what a scene graph is for. If you don’t take advantage of Java3D best features your game will crawl.
Look at Gothic 2 for instance. I have a 1Ghz cpu with a DirectX 8.1 card (low price). I can play with the max features at high but sometimes the game crashes to desktop because its pushing the limits. This is not just a problem of Java3D. The LOD in this game is amazing. You have distance LOD, interior and exterior LOD, once you enter an interior the fps rate rases considerably, but outside in the town it drops. For this you need a mix of several lod techniques and a good api with a scene graph like java3d.
The other aproach is to bind opengl to java and use the new hardware godies like shaders and everything that comes with OpenGL 1.4. Of course that if yiu want to do this, when you get your engine running OpenGL 1.5 is out and then its all over again. ;D