Web based 3d engine - mac/win/linux - (with blender export)

Hi, I’m working on softlime 2.2, a java based 3d engine (like flash but in 3d), and I need some feedback

[update 3]

[update 2]

[update]

  • the exporter work on mac
  • improved speed
  • support morphing between model
    http://www.popomo.net/softlime/suzanne.jpg
    [/update]
You can download and play with the blender exporter (alpha version, so don't expect too much, and use at your own risk) 1- the exporter must be placed inside the blender folder 2- choose "Wavefront (for softlime) (obj)" in the file/export menu 3- this will create a folder, open this folder and launch the index.html page to see the result ^_^

http://www.popomo.net/softlime

I plan to go open source in the future. and I will really appreciate if you can give me some feedback :slight_smile:

If I got enough interrest I will create a tutorial about the exportation
All the demo on this page are created with blender

http://www.popomo.net/softlime/pink.jpg
http://www.popomo.net/softlime/gems.jpg
http://www.popomo.net/softlime/bubble.jpg

Hi

This looks good sofar. I work with blender a lot and wanted few times to put my 3d work onto the web not as a plain rendering but also with interaction.

few questions:

-how do you create the mouse interactions, for example witha click you can make part of the house move up.

-how do you do the light setup? are the backed or is it realtime shading?

-also are you planing to include an AA? the jaggy lines make it look a bit bad.

-can you mention which features you would like to have for that Java 3d plug in?

I am happy to see this 3d plug in. blender needs something like that so the 3d work can be shown in realtime on the web.

Hi Cekuhnen,
Thank you for your feedback :slight_smile:

softlime use a script language to load and interact with its 3d world, the blender exporter create a main script file for you “init.oascript”, open this file inside a text editor (which can save file at plain text, like notepad on windows)

and add this block of text:

function onMouseClick(x,y,prevx,prevy,modifiers,obj)
{
    obj.translate(0,1,0);
}

this will attach a general event listener, you can also attach a event listener to a specific object

now the translation movement is not fluid so you can add a tween object to generate a more pleasing movement:

function onMouseClick(x,y,prevx,prevy,modifiers,obj)
{
    action = new com.oyoaha.softlime.renderer.softlime3d.action.ModelAction(10);
    action.setTweenFunction(action.EASE_IN_SINE);
    action.setModel(obj);
    action.setLoops(1);
    p = obj.getTranslation();
    action.setTranslation(p.x,p.y,p.z+1.6);
    pipeline.addAction(action);
}

can be backed but also real time, for now real time meaning only one frontal light (light are not exported from blender) but it’s easy enough to add more in the future

yes AA is include, but off by default
the implementation of AA is quite good (visualy) but double the resource needed

to turn on the AA, open the “init.oascript”
find the line: (in the init function)

pipeline.setSampling(pipeline.ALIASING);

and change it to

  pipeline.setSampling(pipeline.ANTIALIASING);

now you will probably need to reduce the size of the applet (inside the index.html file) for performance raison
or change the

pipeline.setScale(1,1);

to

pipeline.setScale(2,2);

if you don’t mind the pixelisation (well at less is AA)

yes I need to publish a feature list that a good idea
I also need to post the list of command supported by the script engine
I work on that

Thank you

Hi Oyoaha

I added that text to the script, when I LMB on the window, nothing happens

I commented out the previous code and added this second piece, and again nothing happens. I opened the Java console and it says ‘syntax error’

Syntax Error (
at com.oyoaha.script.OaScript.handleErr(Unknown Source)
at com.oyoaha.script.OaScript.evaluate(Unknown Source)
at com.oyoaha.script.OaScript.run(Unknown Source)
at com.oyoaha.script.OaObject.execute2(Unknown Source)
at com.oyoaha.script.OaObject.execute(Unknown Source)
at com.oyoaha.softlime.renderer.oascript.SoftlimeScript.executeFunction(SoftlimeScript.java:212)
at com.oyoaha.softlime.renderer.oascript.SoftlimeScript.mouseClicked(SoftlimeScript.java:259)
at com.oyoaha.softlime.SoftlimePipeline.fireMouseAndKeyListeners(SoftlimePipeline.java:815)
at com.oyoaha.softlime.SoftlimePipeline.fireListeners(SoftlimePipeline.java:688)
at com.oyoaha.softlime.SoftlimePipeline.main(SoftlimePipeline.java:643)
at com.oyoaha.softlime.SoftlimePipeline.run(SoftlimePipeline.java:599)
at com.oyoaha.softlime.awt.SoftlimeAWTPipeline.run(SoftlimeAWTPipeline.java:65)
at com.oyoaha.softlime.awt.SoftlimeComponent.run(SoftlimeComponent.java:230)
at java.lang.Thread.run(Unknown Source)

Mike

That would be great.

Do any of those commands support animation?

Mike

my bad ^__^;;;

you also need to change

background.setEraseIDBuffer(false);

to

background.setEraseIDBuffer(true);

found the error it seem the forum changed my code

function onMouseClick(x,y,prevx,prevy,modifiers,obj)
{
    action = new com.oyoaha.softlime.renderer.softlime3d.action.ModelAction(10);
    action.setTweenFunction(action.EASE_IN_SINE);
    action.setModel(obj);
    action.setLoops(1);
    p = obj.getTranslation();
    action.setTranslation(p.x,p.y,p.z+1.6);
    pipeline.addAction(action);
}

yes you can create tween (like in flash)
now for animate a character every things is in place but I didn’t finalize it yet
also softlime support a basic scene graph so you can also animate an object in relation to another one

I’m working on the doc…

Thanks

Just want to say that this sounds very promising. I have been playing with java3d a little, and it’s way too complicated to do stuff with it for my liking.

Keep up the good work! :slight_smile:

Thank you :smiley:

actualy, the current implementation didn’t use a hardware accelerated scheme (ala java3d), it’s a pure software solution, in the future, I can modify it to use openGL but for now I prefer to focus on the ease to use (for a graphic designer/developer standpoint) and see how 3d can be use inside a web page/application (like google earth)

I can do beta (alpha ? :slight_smile: ) testing right now … show us what you got ! :slight_smile:

Mike

It’s unbearably slow on the school computer here.

I’m running a 1.4 ghz G4 mac with 512 ram. Too slow.

I upload the api and two working examples
http://www.popomo.net/softlime/doc

enjoy!
this is kinda hard core idealy the export plugin must be in charge of that (user interaction, animation…)

the actual engine is really concervateur it try to don’t eat all the cpu cycle
but the price is a slower display

now I did a lot of testing on two similar boxes: an ibook (800mhz) and a mac mini, the speed was definitivly ok but I use mac OS X 10.4 and with safari the speed is a lot better (java1.5 vs java1.4 vs java1.3) so if you have a previous version of mac OS X yes that can be slow :frowning:
but normaly not slow enough to be unresponsive (unless you turn on AA)

I will try to see what i can do, did all the example are slow? even the gems one?
anyways thanks for the feedback

ok… youve got my blood pumping…

Questions:

Are spec/nor/shaders available? OpenGL 1, 1.5, 2?

what are system requirements?

Works fine on my AMD64 Nvidia 7800GTX, but whats the minimum?

is not hardware accel, so no openGL, it can be but not for now, like that i can support more platform

I need to work on a features list…

well the shader are basicly:

  • shadless
  • flat shading
  • gouraud shading
  • toons shading
  • ambient shading (fake)
  • pseudo phong shading (fake)
  • pseudo ssc shading (fake)

and you can have toons line, you can also manipulate the zbuffer and the idbuffer to do fun stuff (the toons line are done like that)

everything with a pentium class processor at 500mhz minimum must do the trick the graphic cart is not relevant here (because it’s all software)

java1.5 or java1.6 will give you a lot more performance but normaly the engine run on java1.1

Thanks you to have take time to look at it :slight_smile:

Great !

Do you have any example code to animate a character / armature /bone ?

The docs are …er a little ‘sparse’ :wink:

Mike

well everything is in place inside the java code but unfortunaty I can’t give you any demo because it’s not finalized :frowning:
for now you can make some rotation translation and scale and I will work some example for that

you betcha! :slight_smile:
yes there are the raw api generated from the code.
I will work something better, with a lot of example :slight_smile:

Do you plan on doing it in hardware soon? I see so many purely software solutions and they are too slow. My Mac Mini with 10.4 and Safari isn’t too bad but it’s not great. I’m pretty sure flash 8 uses hardware acceleration now too.

Woooooow !!! This is very, very cool !!! Please continue your amazing work :).

OH OH! that´s cool! thanks, I´ll give it a try later :eek: