Saturday, September 17, 2011

Autodesk Maya Crash course 1 - Maya Temple. මායා වලින් දේවස්ථානයක් හදමු part 4



>>> DOWNLOAD VIDEO HERE <<<


ඉහත වීඩියෝව සමග පහත පැහැදිලි කිරීම් බලන්න.
  • ප්‍රොජෙක්ට් එක සේව් කිරීම සදහා: File > Project > New
  • Browse බට්න් එක ක්ලික් කර ප්‍රොජෙක්ට් එක සදහා ෆෝල්ඩරයක් සිලෙක්ට් කරන්න.
  • "Use default" button එක ක්ලික් කර අනෙක් අගයන් සදහා ඩිෆෝල්ට් අගයන් දෙන්න.
  • Click "Accept"
  • Scene එක සේව් කිරීමට: File > Save scene
  • Name: templeBase
  • Click "Save". සීන් එක සේව් වන්නේ Scenes ෆෝල්ඩර් එක තුළයි.
  • දැන් දේවස්ථානය සදහා කණු සාදමු.
  • Create > Polygon primitives > Cube []
  • Edit > Reset
  • Width = 1.75, Height = 0.6, Depth = 1.75
  • Click "Create". දේවස්ථානයේ පාදම මැද Cube එකක් සෑදේවි. මෙය කණුවෙහි පාදමයි.
  • Move tool එක මගින් එය දේවස්ථාන පාදමෙහි මතුපිටට ගෙන එන්න.
  • කණුවේ කද සෑදීමට, Create > Polygon primitives > Cylinder []
  • Edit > Reset
  • Radius = 0.5, Height = 6, Subdivisions around axis = 12
  • Click "Create".
  • සෑදුණු සිලින්ඩරය කණු පාදම මතට ගෙනෙන්න.
  • කණු පාදම සිලෙක්ට් කරන්න.
  • එය ඩුප්ලිකේට් කර කණුවේ ඔළුව සාදමු: Edit > Duplicate []
  • Edit > Reset
  • Translate: 0.0, 6.6, 0.0 (Point 6.6 ක් ඉහළට ගෙනයමු)
  • Scale: 0.8, 1, 0.8
  • Click "Duplicate". කණුව මත ඔළුව සෑදේවි.
  • To Be Continued...

Monday, September 12, 2011

C++ Programming: පරිගණක වැඩසටහනකට System tray icon එකක් අන්තර්ගත කරන හැටි

=======================
Knowledge Level: Intermediate
=======================

මෙම උදාහරණය සදහා භාවිතා කොට ඇත්තේ MS Visual C++ 6 මෘදුකාංගය බව සළකන්න.

උදාහරණය සදහා භාවිතා කොට ඇති පරිගණක වැඩසටහන මෙතැනින් Download කරන්න.

MS Visual C++ 6 මගින් අළුත් Win32 Application ප්‍රොජෙක්ට් එකක් සාදා, එයට රිසෝසස් තුනක් ඇඩ් කරන්න:

  1. Dialog Resource - IDMAINDLG
  2. Icon Resource - IDSTICON
  3. Menu Resource - IDSTMENU
දැන් WinMain ෆන්ක්ෂන් එක සහිත cpp ෆයිල් එක තුළ පහත දැක්වෙන includes යොදන්න:

windows.h
shellapi.h
"resource.h"


දැන් පහත දැක්වෙන වේරියබල්ස් සහ ෆන්ක්ෂන්ස් declare කරන්න:

static HMENU g_hMenuTop = NULL;
HWND hwnd;

NOTIFYICONDATA nid;
static HWND g_hWndMessages = NULL;

static HICON g_hIconTray = NULL;


void ShowSystrayMenu(HWND hwnd);
HWND CreateMessageWindow(HINSTANCE hInstance);
BOOL SysTrayCMD(UINT nAction);
BOOL CALLBACK WndProc(HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam);

const UINT g_nMsgIcon = ::RegisterWindowMessage("systrayexample.TrayIcon.Notify");



පහත දැක්වෙන්නේ ඉහත ෆන්ක්ෂන්ස් define කරන හැටිය. ඒවායින් සිදුකෙරෙන දේ ගැන කෙටි හැදින්වීමක්ද කර ඇත:

HWND CreateMessageWindow(HINSTANCE hInstance)
{
// create a simple dialog-based window to handle the
// messages from the tray
HWND hwndMessage = ::CreateDialog(
hInstance, // instance of the application
MAKEINTRESOURCE(IDMAINDLG), // dialog template
NULL, // parent to the desktop
WndProc); // our message handling
ShowWindow(hwndMessage, SW_SHOWNORMAL);
return(hwndMessage);
}

system tray අයිකනය රයිට් ක්ලික් කිරීම මගින් ඇතිවන messages handle කිරීම සදහා dialog box එකක් සාදයි.

BOOL SysTrayCMD(UINT nAction)
{
// start filling the icon data
nid;
::ZeroMemory(&nid, sizeof(nid));
nid.cbSize = sizeof(nid); // size of struct
nid.hWnd = g_hWndMessages; // window to get messages
nid.uCallbackMessage = g_nMsgIcon; // message ID from icon
nid.hIcon = g_hIconTray; // icon to place in the tray
nid.uID = 1; // ID of icon
::strcpy(nid.szTip, "Program Blocker 1.0"); // tip
nid.uFlags = NIF_ICON|NIF_TIP|NIF_MESSAGE; // valid fields

return(::Shell_NotifyIcon(nAction, &nid));
}

sys tray අයිකනයෙහි properties සකස් කර එය system tray එකට ඇඩ් කරයි.

void ShowSystrayMenu(HWND hwnd)
{
// load the top-level menu and fetch the first
// submenu, then destroy it
HMENU hmenu = ::GetSubMenu(g_hMenuTop, 0);

// make current window foreground
::SetForegroundWindow(hwnd);

// grab the point of right-click and pop up the menu
POINT pt;
::GetCursorPos(&pt);
if(::TrackPopupMenu(
hmenu, // menu to pop up
TPM_RIGHTALIGN, // align the popup
pt.x, pt.y, // point to popup menu from
0, // must be 0
hwnd, // owner
NULL)) // ignored
{
// force task switch to owner application
::PostMessage(hwnd, WM_USER, 0, 0);
}
}

systray අයිකනය මත රයිට් ක්ලික් කළ විට මෙනුවක් පෙන්වයි.

BOOL CALLBACK WndProc(HWND hwnd, UINT nMsg,
WPARAM wParam, LPARAM lParam)
{
/*** Systray notification MSG handling ***/
if(nMsg==g_nMsgIcon)
{
if(lParam==WM_RBUTTONUP)
{
// display the context menu
ShowSystrayMenu(hwnd);
}
}
/**** COMMAND MSG handling ****/
else if(nMsg==WM_COMMAND)
{
// Systray - Add program block
if(LOWORD(wParam)==ID_ICON_ADPROGBLK)
{
Beep(1000,1000);
}
}

return (FALSE);
}

systray මෙනූ අයිතමයක් සිලෙක්ට් කළ විට සිදුවිය යුතු දෑ සිදු කරයි (systray message handling).

දැන් WinMain තුළ පහත දැක්වෙන කෝඩ් එක ටයිප් කරන්න:

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
g_hWndMessages = ::CreateMessageWindow(hInstance);
g_hIconTray = ::LoadIcon(hInstance, MAKEINTRESOURCE(IDSTICON));
g_hMenuTop = ::LoadMenu(hInstance,
MAKEINTRESOURCE(IDSTMENU));
if(SysTrayCMD(NIM_ADD))
{
// simple message loop that dispatches until user quits
MSG msg;
while (::GetMessage(&msg, NULL, 0, 0)) // (returns 0 on WM_QUIT)
{
// make sure to let the dialog message loop handle
// dlg wnd messages
if(!::IsDialogMessage(g_hWndMessages, &msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg); // (dispatches msgs to WndProc())
}
}
}

systray messages හැන්ඩ්ල් කිරීම සදහා වින්ඩෝවක් සාදයි.
systray අයිකනය සහ මෙනුව ලෝඩ් කරයි.

දැන් මෙම වැඩසටහන් ක්‍රියාක්මක කළ විට ඩයලොග් බොක්සයක් විවෘත වන අතර, System tray අයිකනයක් පෙන්වයි. එය රයිට් ක්ලික් කල විට මෙනුවක් මතු වන අතර, එයින් ඔබට අයිතමයක් සිලෙක්ට් කළ හැකිය.

Monday, September 5, 2011

ජාවා නෙට්බීන්ස් හතරවැනි පාඩම - Variables සහ Data types

මෙම පාඩමට අදාල වීඩියෝ එක බැලීමට, VIDEO LESSON ලින්ක් එක රියිට් ක්ලික් කර "copy link location" හෝ "copy link address" සිලෙක්ට් කරන්න: VIDEO LESSON (2MB). ඉන්පසු ඔබේ වෙබ් බ්‍රවුසර් එකෙහි අළුත් හිස් ටැබ් එකක් ඕපන් කර, එහි Address bar එක තුළ රයිට්-ක්ලික් කර ඇඩ්‍රස් එක Paste කර Enter කරන්න. වීඩියෝ පාඩම එම ටැබ් එක තුළ Play වේවි.


වීඩියෝ එකෙහි පෙනෙන්නේ වේරියබල්ස් සාදන ආකාරයයි. මුළින්ම byte වේරියබල් එකක් සාදා එයට 100 අගය ආදේශ කරන ආකාරය පෙන්වා දෙයි. වේරියල් එකක් සාදන විට වීඩියෝ එකෙහි පෙනෙන ලෙස මුළින්ම එහි ඩේටා ටයිප් එක ටයිප් කළ යුතුය:

byte

මෙසේ කරන්නේ එම වේරියබල් එක සදහා පරිගණක මතකයෙහි නිවැරදි ඉඩ වෙන් කිරීමටයි. byte වේරියබල් එකක් සදහා නම් මෙම ඉඩ ප්‍රමාණය bits 8 කි. මෙසේ short, int, float, double ලෙස ඉහළට යන විටදී මෙම ඉඩ ප්‍රමාණය වැඩිවේ. මන්දයත් එසේ ඉහළට යන විට එම දත්ත වර්ග වල ගබඩා කළ හැකි දත්ත පරාසය විශාල වන හෙයිණි.

දත්ත වර්ගය ටයිප් කළ පසු ඊළගට වේරියබල් එක සදහා නමක් ටයිප් කළ යුතුය. මෙය variable declaration ලෙස හැදින්වේ. මෙහිදී අප යොදා ඇත්තේ bytevar යන නමයි:

byte bytevar

මීලගට මෙම වේරියබල් එකට අගයක් ආදේශ කළ යුතුය. මෙය variable initialization ලෙස හැදින්වේ. එය කරන්නේ වේරියබල් නම ඉදිරියේ = සළකුණ සහ ආදේශ කළ යුතු අගය ටයිප් කිරීමෙනි. එසේ කර අවසානයේදී සෙමිකෝලන් එකක් ; යෙදිය යුතුය:

byte bytevar = 100;

ඉහත වැනි ජාවා ලයින් එකක් ජාවා statement එකක් ලෙස හැදින්වේ. සෑම ජාවා ස්ටේට්මන්ට් එකක්ම ඉහත ලෙස සෙමිකෝලන් එකකින් අවසාන කළ යුතුය.

දැන් bytevar වේරියබල් එක තුළ 100 අගය ගබඩා වී ඇත. මෙම අගය වැඩසටහන මගින් අවුට්පුට් කිරීමට නම් System.out.println() ෆන්ක්ෂන් එක භාවිතා කළ යුතුය (ෆන්ක්ෂන් යනු මොනවාදැයි පසුව බලමු):

System.out.println(bytevar);

වීඩියෝ එකේ දැක්වෙන පරිදි මෙසේ සෑම දත්ත වර්ගයක් සදහාම වේරියබල් සාදා, ඒවාට අගයන් ආදේශ කොට, එම අගයන් අවුට්පුට් කළ හැකිය. long වැනි විශාල දත්ත වර්ග සදහා විශාල අගයන් ලබා දී ඇත. float සහ double සදහා අගයන් ලබා දීමේදී අගය අවසානයේදී පිලිවෙලින් f සහ d යොදා ඇති බව බලන්න:

floaf floatvar = 100000.99f ;
double doublevar = 100000000000.99d;

boolean වේරියබල් සදහා ture සහ false අගයන් ලබා දී ඒවා අවුට්පුට් කර ඇත.

char සදහා quotes තුළ 'A' '?' ආදී වශයෙන් කැරැක්ටර්ස් ආදේශ කොට ඇත.

To be continued...

Autodesk Maya Crash course 1 - Maya Temple. මායා වලින් දේවස්ථානයක් හදමු part 3

================================================
අපගේ වීඩියෝ පාඩම් ගැන සටහනක්:
අපගේ වීඩියෝ පාඩම් මේ දක්වා අප්ලෝඩ් කළේ Youtube වෙතටයි. එහෙත් බ්‍රෝඩ්බෑන්ඩ් නොමැති මිතුරන් Youtube විඩියෝ බැලීමට තමන්ට නොහැකි බව අපට සැළ කර සිටින නිසාද, එම වීඩියෝ වල quality එක අඩු නිසාද, අඩු ඩවුන්ලෝඩ් ප්‍රමාණයක් (බොහෝ විට 3Mb, 4Mb පමණ) සහිත එහෙත් ඉතා උසස් quality එකක් සහිත වීඩියෝ ෆෝමැට් එකක් ලබා දීමට තිරණය ‍කලෙමු. මෙහිදී ඔබට වීඩියෝ එක ලෙස exe ෆයිල් එකක් ඩවුන්ලෝඩ් කළ යුතුය. එය ධාවනය කළ විට වීඩියෝ පාඩම Play වේ.
================================================

මෙම ලින්ක් එක ක්ලික් කිරීම මගින් වීඩියෝ exe ෆයිල් එක ඩවුන්ලෝඩ් කරන්න: Download Video Lesson

පාඩමෙහි text version එක:
  • අළුත් ප්‍රොජෙක්ට් එකක් සෑදීම සදහා File > Project > new සිලෙක්ට් කරන්න.
  • New project ඩයලොග් බොක්ස් එකේ New තුළ MayaTemple නමින් project name එක ලබා දෙන්න.
  • Location තුළ ප්‍රොජෙක්ට් එක සේව් කිරීම සදහා තැනක් සිලෙක්ට් කරන්න.
  • අනෙක් සියළුම අගයන්ට default අගයන් ලබාදීමට Use default බට්න් එක ක්ලික් කර Accept බට්න් එක ක්ලික් කරන්න.
  • දැන් සීන් එක සේව් කිරීම සදහා File > Save scene
  • සීන් එක templeBase නමින් සේව් කරන්න. මෙය සේව් වෙන්නේ ඔබ ප්‍රොජෙක්ට් එක සේව් කළ ෆෝල්ඩර් එක තුළ ඇති Scenes නැමැති ෆෝල්ඩර් එක තුළයි.
  • මීලගට කළ යුත්තේ දේවස්ථානය සදහා කණු සෑදීමයි. මුළින්ම කණුවට අවශ්‍ය පාදම සදමු.
  • Create > Polygon primitives > Cube [] ක්ලික් කරන්න.
  • Edit > Reset
  • Width = 1.75, Depth = 1.75, Height = 0.6 ලබා දී Create ක්ලික් කරන්න.
  • කුඩා Cube එකක් දෙවස්ථානයේ පාදම මැද්දේ සැදේ. මෙය Side view එකෙන් පැහැදිව දැකිය හැකිය.
  • Move ටූල් එක මගින් එය පාදම මතුපිටට ගෙන එන්න.
  • To be continued...