Saturday, January 24, 2009

Blender madness

Learning blender for my last LightFeather engine test (previous test was, scene import export, shader tests). this last test is animated model export and import. I decided to follow BSoD tutorial to create a animated character then use LightFeather exporter to export it lfm format. while following the tutorial I have picked up some useful technique, worry that I'll forget them soon, since I don't do modeling often, I decided to note down the useful technique here :)

1) Use Numpad with laptop
Blender uses numpad for camera control, but laptop has no numpad, to use number row insteads, drag down menu bar then goto "system & opengl" then enable "enumerate Numpad"

2) Linked vertex selection
to select linked vertex, hold down alt key then rmb a vertex, all linked vertex will be selected as well, to select other linked vertex, rmb the same vertex again.

3) Undo list
alt+u for history list, handy

4) duplicate vertexes
press key 'e' then rmb to cancel it, new vertexes are duplicate at the same location as original.

5) simulate "offset" CAD function in blender
select vertexes and press key 's' then hold down ctrl key, move mouse to offset the vertexes.

6) remove overlapped vertexes
press key 'w' then select "Remove Doubles"

7) Useful shorcut keys
ctrl+r == loop cut
ctrl+n == recalculate normal in edit mode
ctrl+tab == vertex, edge and face mode swither if mesh selected, pose mode if armature selected
shift+s == snap menu, able to snap selected object and 3d cursor
alt+b == clip the selected area, good for hiding unwanted area
alt+r == reset rotation
alt+g == reset transition
c == move camera to 3d cursor or center view (3d cursor could be adjust by view->view properties...
m == move object to diff layer
f = create a face


8) save version number
f2 to call up save dialogbox, use number to postfix the filename, press key + to change increment the postfix number, '-' to decrement the postfix number.
alt + '+' or alt + '-' for minor version
shift + '+' or shift + '-' for medium version
ctrl + '+' or ctrl + '-' for major version

9) influence move
select a vertex and press key '0' all nearby vertexes will be move together with the vertex, to increase it influence, use mouse wheel (mw)

Thursday, January 8, 2009

Lua, Blender, flex, memory allocators == today topic

Is about time to go to bed, let's spend a few minutes to note down what i have learnt these few days

Lua
===
- Environment table is per module (or class), registry table is for all module. to assign an environment table to a module u should do this (i don;t understand it actually, since luaL_register did create new table internally)
lua_newtable(L);
lua_replace(L, LUA_ENVIRONINDEX);
luaL_register(L, libname, funclist);
- longer the table it is, more stall time for gc it is
- lua debugger use introspect (query) and hook (callback) for debugging (neat)

Blender
=======
- ctrl-e: special edge functions (loop cut)
- ctrl-v: speical vertex function (merge vertexes)
- ctrl-tap: selection method in edit mode
- ctrl-lmb /w vertex selected: duplicate the vertex
- ctrl-lmb /wo vertex selected: create new vertex
- w: subsurface
- k: loop cut
- u: texture unwrap method
- shift-alt-b: baked Shadow to texture (must make sure the background color is white

Flex
====
- forget about pure actionscript but still mxml is still a need

Memory Allocator
===============
- an allocator has two types, object and data types, object need to use special new operator
- don't need to implement it now, only need to resign yourself.

ok my eye lib refuse to keep opening any longer, night!

Tuesday, January 6, 2009

Feasibility studies for the big Three

Have spend time to study the feasibility of the three projects, the result is they are all feasible (of course). I have set some short term goals for them

  1. Async platform, added more thought to it, the event system shouldn't be specific to any of the module, for example event for renderer, event for window are bad idea, bad for making the system rigid and not generic. the new event system should be generic any module and talk to any module, the only constraint is from the logic module. the short term goal of this project is to let window and renderer module communicate to each other through the event system
  2. SmartFlex framework, I have research on java's nio libraies (mina, grizzly, nio framework and xsocket) and also study the feasibility of flex program without mxml. the outcome is xsocket is the one, because it is less web centric (oppose to grizzly), the design is closer to standard network library (mina let you design protocol), and the small foot print. but flex without mxml was an failure, because flex without mxml has compile prolem, theme problem and view stack problem. the short term goal for this project was to setup a flex project with mxml and yet object oriented.
  3. LightFeather project, I have successfully import 3d models with textures into lightfeather, the next approach will be importing animated avatar into it.
yap so far so good, may the time with me :)