Sony Ericsson - Products - Mobile phones - Specifications - Xperia™ X10

Friday, December 25, 2009

Sony Ericsson - Products - Mobile phones - Specifications - Xperia™ X10

I can't wait to get my hands on this phone...

Read more...

Windows Small Business Server 2003 help links

Tuesday, December 22, 2009

I share these links to seek help with the slow performance of the windows small business server 2003.

http://www.smallbizserver.net/Forums/tabid/53/aff/11/aft/48042/afv/topic/Default.aspx

http://www.winsug.org/sbs2k3/sbs2k3info.htm

http://blogs.technet.com/sbs/default.aspx

http://www.pchelpforum.com/windows-server/44272-4gb-memory-slow-sbs-2003-a.html

http://sbs.seandaniel.com/2006_02_01_archive.html

http://support.microsoft.com/kb/810371

Hope it works for you :)

Read more...

World of Warcraft + Mr. T = This!

Wednesday, November 18, 2009




I kinda feel sorry for Mr. T after seeing this ad. :P



Read more...

Some useful Irrlicht engine FAQS

Sunday, November 15, 2009

Hi, These FAQs I found in the irrlicht might be useful, just passing the word around.

Pausing an Irrlicht Application | Tutorial on how to pause an Irrlicht App | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=782

Simple Collision\Physics Animator | Release of a Simple Col/Phys Animator | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=834

Alternative Input For Keys | Describes how to handle an alternative method of input retrieval that is more accurate | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=808

Cel-Shading in Milkshape | Explains how to do Pseudo-Cel Shading in Milkshape | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=797

WinTitle as Mouse Coords | Set the window caption to the Mouse Coords |
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1234

Rotating a node to face another | same as title | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1325

Setting up A SF CVS Root | As Title | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1420

Reading Extra Info from BSP's | Class to read info from bsp files | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1000

Resolution Independent GUI's | How to set them up | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1039

Third Person Camera | Set up a Third Person Camera | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1140

MD3 Loader | Class Extension for an MD3 Loader | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1204

Timing and Movement : P1 | Framerate Independant Movement | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=723

Newton Game Dynamics | Info about the Newton Physics Engine Integration | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1280

Changing Tris in a Tri Selector | As Title | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1774

VB GUI Editor | Uses VB (required) to make and layout Irrlicht GUI's | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1851

TPC | Third Person Camera Tutorial | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=961

Play AVI Movies | How to play AVI Movies | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=927

USING DX IN DEV C++ | READ THIS NOW AND STOP ASKING THIS Very Happy | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=1700

Smoothing the FPS Camera | How to smooth out the fps camera | http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=2166

Read more...

OMG LOL!

Saturday, November 14, 2009

I was just thinking about cool and funny website names to create, when suddenly OMGLOL.com came into my mind, so entered it in my browser to find out if it already exists... which apparently it did exist, and was really funny...


check it out:

Read more...

Secret Confessions of A World of Warcraft Addict!

Secret Confessions of A World of Warcraft Addict! quite a sad story...

Read more...

It's a Trap!

Thursday, November 12, 2009

Read more...

Sony Ericsson Xperia™ X10

Wednesday, November 4, 2009

Sony Ericsson - Products - Mobile phones - Specifications - Xperia™ X10

Read more...

Murdoch University Bloggers Competition - Your Vote

Wednesday, October 28, 2009

Murdoch University Bloggers Competition - Your Vote

Read more...

Call for action on energy drinks

Saturday, October 24, 2009

State and federal food ministers have called for action on caffeinated energy drinks after NSW findings that most of the drinks exceed the legal limit for caffeine.

The drinks have been associated with recent cases of dizziness and nausea among teenagers.

The food regulation ministerial council has called for a "national compliance strategy" to be developed to regulate caffeinated energy drinks, Fairfax newspapers say.

Preliminary findings of tests on 70 caffeinated energy drinks, published this month by the NSW Food Authority, showed that 77 per cent of the tested drinks were over the legal limit for caffeine and one in three were 16 per cent over the legal limit.

Meeting in Brisbane on Friday, the ministerial council was told of concerns at the number of caffeinated energy drinks on the market and "reports of recent incidents involving their consumption by young people".

The ministers called for a report into the issues raised by the drinks and for options on what action should be taken.

NSW had already removed five of the drinks from the market after finding some of them exceeded the limit by 30 per cent, Primary Industries Minister Ian Macdonald said.


source: http://au.news.yahoo.com/thewest/a/-/breaking/6383531/call-for-action-on-energy-drinks/

Read more...

100 Karma in Plurk!

Friday, October 23, 2009


wuooooahhhhhhhh finally reached the highest nirvana in plurk today!

It has been a year since I signed up in Plurk...
And now I have reached the highest nirvana...



Read more...

Remarkable Indonesia

Thursday, October 22, 2009




Come to Indonesia, it's fun!

Read more...

3ds max tank caterpillar track tutorial

Wednesday, October 21, 2009

here is the source link:
http://www.escalight.com/tutorials/3dsmax-tutorials/tank-caterpillar-track-animation.html

have fun!

Read more...

Free 3D Models

Human 3D models female free: for desktop wallpapers animation screensavers


This site has a great collection of free 3D models!
hope its useful ;D

Read more...

The reality these days

Monday, October 19, 2009


How assignments will end up.

Read more...

Home | Murdoch University in Perth Australia

Tuesday, October 13, 2009

Home | Murdoch University in Perth Australia

Shared via AddThis

Read more...

Google Classic

Saturday, October 10, 2009

Read more...

Google's Opinion

Read more...

iPhone Programming Course via Online Video, Worksheets and One-on-One Sessions

Friday, October 9, 2009


EDUmobile.ORG has launched an online iphone programming course that teaches candidates via Online Video, PDF Documents, One-on-One sessions and Weekly Worksheets.

For those who do not own a Mac, there is a facility offered to remotely login to access a Mac to carry out your programming from a normal PC connected to the Internet. Thus, one does not need to purchase or own a Mac.

The cost of the complete iphone development course is $200 and there is a 25% discount if you use the code AZV while registering. You can also opt to pay in 3 easy monthly installments.

Candidates get a certification on completion and an option where you also get to work and co-publish your first live industrial iphone project (game or application) on the official Apple Appstore, This means that you can essentially earn back the money and time that you put into this, many times over in a matter of a few months!

Visit http://edumobile.org/iphone-course.html to learn more about iphone tutorial

Read more...

Chicken strip, a funny indonesian comic strip

Thursday, October 8, 2009

A really funny comic strip with themes of daily stuff and IT related things
http://chickenstrip.wordpress.com/

Shared via AddThis

Read more...

Irrlicht code snippets

Tuesday, October 6, 2009

WRITE IMAGE TO FILE:

Code:

IImage* image = Device.driver->createScreenShot();

if (image)
{
Device.driver->writeImageToFile(image, "c:\\images\\dump.jpeg");
Device.driver->writeImageToFile(image, "c:\\images\\dump.png");
Device.driver->writeImageToFile(image, "c:\\images\\dump.bmp");
Device.driver->writeImageToFile(image, "c:\\images\\dump.tga");
Device.driver->writeImageToFile(image, "c:\\images\\dump.jpg");
image->drop();
}

LOAD IMAGE (256X256) FROM FILE, CHANGE PIXEL AND SAVE:
Code:

video::ITexture * image1 = driver->getTexture("d:\\x\\map.bmp");
//driver->makeColorKeyTexture(image1, core::position2d(0,0));
u8 * ff=(u8 *)image1->lock();
IImage* im = driver->createImageFromData(image1->getColorFormat(), dimension2d(256,256), ff);
im->setPixel(100,100,SColor(255,255,0,0));
driver->writeImageToFile(im,"D:\\x\\map.bmp");
im->drop();

CHANGE CAPTION FUNCTION:
Code:

void showCaptionVar(std::string txt)
{
std::string gio1=txt;
char gio2[512];
strcpy_s(gio2, gio1.c_str());
core::stringw gio3 = gio2;
device->setWindowCaption(gio3.c_str());
}

EVENTS:
Code:

class mvm:public IEventReceiver
{
public:
bool OnEvent(const SEvent &e)
{
static bool pwheel=false;
if (e.EventType==EEVENT_TYPE::EET_MOUSE_INPUT_EVENT)
{
if (e.MouseInput.Wheel==-1)
{
}else if (e.MouseInput.Wheel==1)
{
}
if (e.MouseInput.Event==irr::EMIE_RMOUSE_PRESSED_DOWN)
{
mox=e.MouseInput.X;
moy=e.MouseInput.Y;
}
if (e.MouseInput.Event==irr::EMIE_RMOUSE_LEFT_UP)
{
}
if (e.MouseInput.Event==irr::EMIE_MOUSE_MOVED)
{
}
}
if(e.MouseInput.Wheel)
{
if (pwheel==false)
{
//middle button down event
pwheel=true;
}else{
//middle button up event
pwheel=false;
}
}
if (e.EventType==irr::EEVENT_TYPE::EET_GUI_EVENT)
{
s32 id = e.GUIEvent.Caller->getID();
switch (e.GUIEvent.EventType)
{
case gui::EGUI_EVENT_TYPE::EGET_BUTTON_CLICKED:
{
if (id==2)
{

}
break;
}
case gui::EGUI_EVENT_TYPE::EGET_ELEMENT_FOCUSED
{
if (id==2)
{
//gui::
z=z+10;
}
break;
}
}
}
if (e.EventType==EET_KEY_INPUT_EVENT)
{
switch (e.KeyInput.Key)
{
case KEY_KEY_W:
{
wasd[0]=e.KeyInput.PressedDown;
break;
}
case KEY_ESCAPE:
{
device->closeDevice();
break;
}
return true;
}
return false;
}
return false;
}
};

BASIC VARIABLES:
Code:

#include "irrlicht.h"
#include
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif

IrrlichtDevice * device;
video::IVideoDriver * driver;
scene::ISceneManager * smgr;
scene::ICameraSceneNode * cam;

irr::SIrrlichtCreationParameters pars;
pars.EventReceiver=&receiver;
pars.AntiAlias=true;
pars.Fullscreen=true;
pars.DriverType=video::EDT_DIRECT3D9;
pars.WindowSize=core::dimension2d(1024,768);
pars.Bits=32;
device = createDeviceEx(pars);
driver = device->getVideoDriver();
driver->setTextureCreationFlag(video::ETCF_ALWAYS_32_BIT, true);

smgr = device->getSceneManager();
cam= smgr->addCameraSceneNode();
cam->setFarValue(50000.0f);

COLLISION DETECTION WITH BOUNDING BOXES
Code:

bool collision(ISceneNode* one, ISceneNode* two) {
aabbox3d b1, b2;

b1 = one->getBoundingBox ();
b2 = two->getBoundingBox ();

one->getRelativeTransformation().transformBoxEx( b1 );
two->getRelativeTransformation().transformBoxEx( b2 );
return b1.intersectsWithBox( b2 );
}
//OTHER WAY
//bool collision(ISceneNode* one, ISceneNode* two) {
//if(one->getTransformedBoundingBox().intersectsWithBox(two->getTransformedBoundingBox())) {
//return (one->getTransformedBoundingBox().intersectsWithBox(two->getTransformedBoundingBox()));
//}
//return false;
//}

SHOW BOUNDING BOX (debugging)
Code:

node->setDebugDataVisible(scene::EDS_BBOX);

MOVE NODE
Code:

core::vector3df v=node->getPosition();
v.X+=1.0f;
node->setPosition(vector3df(v));

TEXTURES
Code:

irr::video::ITexture * texture[1];
texture[0]=driver->getTexture("c:/x/0.bmp");
texture[1]=driver->getTexture("c:/x/1.bmp");
node->setMaterialTexture(0,texture[0]);
node->setMaterialTexture(1,texture[1]);
node->setMaterialFlag(EMF_LIGHTING, false);
node->setMaterialType(video::EMT_REFLECTION_2_LAYER);

REMOVE CONSOLE WINDOW
Code:

#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
int main()
{
return 0;
}

ATTACH TO BONE (Add Child to Joint)
Code:

ISceneNode * bone=node->getJointNode("Bone1");
bone->addChild(node2);

CREATE BILLBOARD
Code:

IBillboardSceneNode * bill = smgr->addBillboardSceneNode();
bill->setMaterialType(EMT_TRANSPARENT_ADD_COLOR );
bill->setMaterialTexture(0, driver->getTexture("c:/x/b1.bmp"));
bill->setMaterialFlag(video::EMF_LIGHTING, false);
bill->setSize(dimension2d(10.0f, 10.0f));
bill->setPosition(vector3df(1.0f, 0.0f, 110.0f));

ADD ANIMATOR
Code:

irr::scene::ISceneNodeAnimator * anim = smgr->createFlyCircleAnimator (core::vector3df(0,55,110),5.0f, 0.01,core::vector3df(1,0,1));
bill->addAnimator(anim);
anim->drop();

ADD LIGHT
Code:

scene::ILightSceneNode* nodeLight = smgr->addLightSceneNode(0, core::vector3df(100, 100, 100),
video::SColorf(1.0f,1.0f,1.0f,1.0f),
20000.0f);
video::SLight light;
light.Direction = core::vector3df(100, 100, 0);
light.Type = video::ELT_DIRECTIONAL;
light.AmbientColor = video::SColorf(0.3f,0.3f,0.3f,1);
light.SpecularColor= video::SColorf(0.4f,0.4f,0.4f,1);
light.DiffuseColor = video::SColorf(1.0f,1.0f,1.0f,1);
light.CastShadows = false;

nodeLight->setLightData(light);

CREATE A PARTICLE SYSTEM
Code:

// create a particle system
scene::IParticleSystemSceneNode* ps = smgr->addParticleSystemSceneNode(false);

scene::IParticleEmitter* em = ps->createBoxEmitter(
core::aabbox3d(-7,0,-7,7,1,7), // emitter size
core::vector3df(0.0f,-0.06f,0.0f), // initial direction
10,100, // emit rate
video::SColor(0,0,0,255), // darkest color
video::SColor(0,255,255,255), // brightest color
80,20000,0, // min and max age, angle
core::dimension2df(5.f,5.f), // min size
core::dimension2df(20.f,20.f)); // max size

ps->setEmitter(em); // this grabs the emitter
em->drop(); // so we can drop it here without deleting it

scene::IParticleAffector* paf = ps->createFadeOutParticleAffector();

ps->addAffector(paf); // same goes for the affector
paf->drop();

ps->setPosition(core::vector3df(10,450,0));
ps->setScale(core::vector3df(100,100,100));
ps->setMaterialFlag(video::EMF_LIGHTING, false);
ps->setMaterialFlag(video::EMF_ZWRITE_ENABLE, false);
ps->setMaterialTexture(0, driver->getTexture("c:/x/b1.bmp"));
ps->setMaterialType(video::EMT_TRANSPARENT_VERTEX_ALPHA);

CREATE WATER (addWaterSurfaceSceneNode)
Code:

IAnimatedMesh* plane = smgr->addHillPlaneMesh("floor", // Name of mesh
core::dimension2d(1,1), // Size of a tile of the mesh.
core::dimension2d(100,100), //tileCount - Specifies how much tiles there will be. If you specifiy for example that a tile has the size (10.0f, 10.0f) and the tileCount is (10,10), than you get a field of 100 tiles which has the dimension 100.0fx100.0f.
0, //material
0, //hillheight
core::dimension2d(10,10), //countHills
core::dimension2d(100,100)); // texturerepeat

ISceneNode* sea = smgr->addWaterSurfaceSceneNode(plane->getMesh(0), 2.0f, 350.0f, 8.0f,0,-1,vector3df(0,0,0),vector3df(10,0,0),vector3df(1,1,1));
sea->setMaterialTexture(0, driver->getTexture("c:/x/sand.png"));
sea->setMaterialTexture(1, driver->getTexture("c:/x/water.png"));
sea->setMaterialFlag(EMF_LIGHTING, true);
sea->setMaterialType(video::EMT_REFLECTION_2_LAYER);

GET DISTANCE BETWEEN NODES (addWaterSurfaceSceneNode)
Code:

ISceneNode* one;
ISceneNode* two;
one->getAbsolutePosition().getDistanceFrom(two->getAbsolutePosition());

NODE ANIMATION
Code:

myNode->setFrameLoop(1,15);
myNode->setAnimationSpeed(25);

CREATE FOG
Code:
driver->setFog(SColor(0,0, 0, 0),true, 150,220,0.01,false, false);
node->setMaterialFlag(video::EMF_FOG_ENABLE, true);

CREATE GUI ELEMENT
Code:
irr::gui::IGUIEnvironment *ige=smgr->getGUIEnvironment();

irr::gui::IGUIMeshViewer * gm=ige->addMeshViewer(rect(0,0,100,100),0,-1,0);
scene::IAnimatedMesh * mesh=smgr->getMesh("c:/x/cube.x");
gm->setMesh(mesh);

irr::gui::IGUIEditBox * txt=ige->addEditBox(L"giorgi",core::rect(150,150,300,200),true,0,-1);

GET NODE AT SCREEN 2D POSITION №1
Code:
scene::ISceneNode *node = smgr->getSceneCollisionManager()-> getSceneNodeFromScreenCoordinatesBB(position2d(mox,moy),0x1,false);

GET NODE AT SCREEN 2D POSITION №2
Code:
core::line3d line;
line=smgr->getSceneCollisionManager()->getRayFromScreenCoordinates(position2d(mox,moy),cam);
scene::ISceneNode *nodeline = smgr->getSceneCollisionManager()->getSceneNodeFromRayBB(line,0x1,false);

GET NODE AT SCREEN 2D POSITION №3 (exact selection without bounding box)
Code:
int idd=0;
int curid=0;
scene::ITriangleSelector * sel[100];

void gio::add()
{
idd++;
scene::IAnimatedMesh * mesha=smgr->getMesh("c:/x/apple/apple.x");
scene::IAnimatedMeshSceneNode *nd=smgr->addAnimatedMeshSceneNode(mesha,0,idd,core::vector3df(xx, yy, zz));
sel[idd] = smgr->createOctTreeTriangleSelector(mesha, nd, 128);
//If you wish to select animated node you can use:
//sel[idd] = smgr->createTriangleSelectorFromBoundingBox(nd);
nd->setTriangleSelector(sel[idd]);
}
core::line3d line;
core::vector3df intersection;
core::triangle3df tri;
line=smgr->getSceneCollisionManager()->getRayFromScreenCoordinates(position2d(mox,moy),cam);

int k=0;
for(k=0; k<=idd; k++)
{
if (smgr->getSceneCollisionManager()->getCollisionPoint(line, sel[k], intersection, tri))
{
curid=k;
break;
}
}
scene::IAnimatedMeshSceneNode *curnode=smgr->getSceneNodeFromId(curid);

SELECTOR - INTERSECTION POINT WITH 1) CAMERA VIEW - 2) MOUSE 2D COORDINATES
Code:
scene::IAnimatedMesh * ter = smgr->getMesh("c:/x/ter.3ds");
scene::ISceneNode * ternode=smgr->addOctTreeSceneNode(ter,0);
ternode->setMaterialFlag(video::EMF_LIGHTING,false);

scene::ITriangleSelector * selector = smgr->createOctTreeTriangleSelector(ter, ternode, 128);
ternode->setTriangleSelector(selector);


IBillboardSceneNode * bill = smgr->addBillboardSceneNode();
bill->setMaterialType(EMT_TRANSPARENT_ADD_COLOR );
bill->setMaterialTexture(0, driver->getTexture("c:/x/b1.bmp"));
bill->setMaterialFlag(video::EMF_LIGHTING, false);
bill->setSize(dimension2d(10.0f, 10.0f));
bill->setPosition(vector3df(1.0f, 0.0f, 110.0f));


core::line3d line;

//1) Intersection with camera:
line.start = cam->getPosition();
line.end = line.start + (cam->getTarget() - line.start).normalize() * 1000.0f;

//2) intersection with mousecoordinates:
//line=smgr->getSceneCollisionManager()->getRayFromScreenCoordinates(position2d(mox,moy),cam);



core::vector3df intersection;
core::triangle3df tri;

if (smgr->getSceneCollisionManager()->getCollisionPoint(line, selector, intersection, tri))
{
bill->setPosition(intersection);
}
Source: http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=34385

Read more...

2009 Sumatra earthquakes - The Big Picture - Boston.com

2009 Sumatra earthquakes - The Big Picture - Boston.com

Posted using ShareThis

Read more...

Altitude, the game

Sunday, October 4, 2009

Technorati Tags:

I found a really interesting game on the internet which is free, and can play multiplayer. The amazing thing is that it was developed using JAVA! this means you play it from the web browser or install (Windows, Mac, Linux).

 

 

If you are interested to try and play, here’s the link to start playing:

http://altitudegame.com/index.html

Read more...

Grand Theft Auto Precinct

Grand Theft Auto Precinct

Shared via AddThis

Read more...

Unique Living room PC case mod

 

Imagine having a living room for little people living inside your PC. :)

 

 

 

 

 

Source: http://forum.modding.ru/viewtopic.php?t=31539

Read more...

Bluetooth Watch with Caller ID Display

Saturday, October 3, 2009

A perfect companion for your cell phone

See who is calling or mute your phone's ringer!

Laziness is a virtue and something we aspire to whenever possible. Repetitive and demanding tasks that require a lot of work should be avoided at all costs. Instead, laziness should be inserted in the form of a program, or device, that performs the repetitive task for you.


Bluetooth Watch with Caller ID Display

Sure, you could look at your cell phone to see who is calling or push a button to mute the ringer and let them go to voicemail. But, instead, we think you should be as lazy as possible and use our Bluetooth Watch with Caller ID Display for these tasks. This watch keeps you connected in style by combining a vintage analog/digital watch design with Bluetooth Wireless technology. It notifies you when your phone rings with a discreet vibrating sensation and showing the caller's name and/or number on the bright OLED display. When an SMS/text message is received the watch will vibrate and the text alert icon will appear. You can mute your phone's ringer or reject a call by simply pushing a button on the watch.

Product Details

  • Displays caller name and/or number on screen (some phones only display number)
  • A text icon will appear when receiving text message (please note - this feature only works on some phones, mostly Sony Ericcson. This feature does NOT show the actual text message)
  • Mute your phone's ringer by pushing a button on the watch
  • Rechargeable battery with power save function
  • Bluetooth 2.0
  • 96x16 pixel OLED display
  • Leather band
  • Stainless steel case
  • Bluetooth pairing code "0000" (four zeroes)

Read more...

a game that deletes your desktop files

Friday, October 2, 2009

see here:
http://www.stfj.net/art/2009/loselose/


Read more...

New PS 3 controller

Tuesday, September 22, 2009


check this out:

New user interface for PS 3, i think it kinda challenges project natal of XBOX 360



Read more...

Open-source camera could revolutionize digital photography

Tuesday, September 8, 2009

Open-source camera could revolutionize digital photography

Stanford scientists' open-source camera could change photography by giving programmers anywhere the power to change camera features and create new possibilities.

Stanford photo scientists are teaching the camera new tricks

Jack Hubbard

Stanford professor Marc Levoy plans to develop and manufacture the "Frankencamera" as a platform that will first be available at minimal cost to fellow computational photography researchers.


BY DAVID ORENSTEIN

Stanford photo scientists are out to reinvent digital photography with the introduction of an open-source digital camera, which will give programmers around the world the chance to create software that will teach cameras new tricks.

L.A. CiceroMarc Levoy and Andrew Adams

Marc Levoy, professor of Computer Science and of Electrical Engineering and graduate student Andrew Adams with the open source camera.

If the technology catches on, camera performance will be no longer be limited by the software that comes pre-installed by the manufacturer. Virtually all the features of the Stanford camera – focus, exposure, shutter speed, flash, etc. – are at the command of software that can be created by inspired programmers anywhere. “The premise of the project is to build a camera that is open source,” said computer science professor Marc Levoy.

Computer science graduate student Andrew Adams, who helped design the prototype of theStanford camera (dubbed Frankencamera,) imagines a future where consumers download applications to their open-platform cameras the way Apple apps are downloaded to iPhones today. When the camera’s operating software is made available publicly, perhaps a year from now, users will be able to continuously improve it, along the open-source model of the Linux operating system for computers or the Mozilla Firefox web browser.

From there, the sky’s the limit. Programmers will have the freedom to experiment with new ways of tuning the camera’s response to light and motion, adding their own algorithms to process the raw images in innovative ways.

Frankencamera at minimal cost

Levoy’s plan is to develop and manufacture the “Frankencamera” as a platform that will first be available at minimal cost to fellow computational photography researchers. In the young field of computational photography, which Levoy helped establish, researchers use optics benches, imaging chips, computers and software to develop techniques and algorithms to enhance and extend photography. This work, however, is bound to the lab. Frankencamera would give researchers the means to take their experiments into the studios, the landscapes, and the stadiums.

click to play animation

Animation demonstrating one example of how the Frankencamera extends and enhances photography.

For example, among the most mature ideas in the field of computational photography is the idea of extending a camera’s “dynamic range,” or its ability to handle a wide range of lighting in a single frame. The process of high-dynamic-range imaging is to capture pictures of the same scene with different exposures and then to combine them into a composite image in which every pixel is optimally lit. Until now, this trick could be done only with images in computers. Levoy wants cameras to do this right at the scene, on demand. Although the algorithms are very well understood, no commercial cameras do this today. But Frankencamera does.

Another algorithm that researchers have achieved in the lab, but no commercial camera allows, is enhancing the resolution of videos with high-resolution still photographs. While a camera is gathering low-resolution video at 30 frames a second, it could also periodically take a high-resolution still image. The extra information in the still could then be recombined by an algorithm into each video frame. Levoy and his students plan to implement that on Frankencamera, too.

Yet another idea is to have the camera communicate with computers on a network, such as a photo-hosting service on the Web. Imagine, Levoy says, if the camera could analyze highly-rated pictures of a subject in an online gallery before snapping the shutter for another portrait of the same subject. The camera could then offer advice (or just automatically decide) on the settings that will best replicate the same skin tone or shading. By communicating with the network, the camera could avoid taking a ghastly picture.

Of course users with Frankencameras would not be constrained by what is already known. They’d be free to discover and experiment with all kinds of other operations that might yield innovative results because they’d have total control.

"Some cameras have software development kits that let you hook up a camera with a USB cable and tell it to set the exposure to this, the shutter speed to that, and take a picture, but that’s not what we’re talking about," says Levoy. "What we’re talking about is, tell it what to do on the next microsecond in a metering algorithm or an autofocusing algorithm, or fire the flash, focus a little differently and then fire the flash again — things you can’t program a commercial camera to do."

Behind the lens cap

To create an open-source camera, Levoy and the group cobbled together a number of different parts: the motherboard, per se, is a Texas Instruments "system on a chip" running Linux with image and general processors and a small LCD screen. The imaging chip is taken from a Nokia N95 cell phone, and the lenses are off-the-shelf Canon lenses, but they are combined with actuators to give the camera its fine-tuned software control. The body is custom made at Stanford. The project has benefited from the support of Nokia, Adobe Systems, Kodak, and Hewlett-Packard. HP recently gave graduate student David Jacobs a three-year fellowship to support his work on the project. Kodak, meanwhile, supports student Eddy Talvala.

Within about a year, after the camera is developed to his satisfaction, Levoy hopes to have to have the funding and the arrangements in place for an outside manufacturer to produce them in quantity, ideally for less than $1,000. Levoy would then provide them at cost to colleagues and their students at other universities.

The son, grandson, and great-grandson of opticians, Levoy sees his mission as not only advancing research in computational photography, but also imbuing new students with enthusiasm for technology. This spring he launched a course in digital photography in which he integrated the science of optics and algorithms and the history of photography’s social significance with lessons in photographic technique.

As many ideas as Levoy’s team may want to implement on the camera, the real goal is to enable the broader community of photography researchers and enthusiasts to contribute ideas the Stanford group has not imagined. The success of Camera 2.0 will be measured by how many new capabilities the community can add to collective understanding of what’s possible in photography.

David Orenstein is the associate communications director for the School of Engineering.

Read more...

backlink

Free Automatic Backlink

Followers

  © Blogger template On The Road by Ourblogtemplates.com 2009

Back to TOP