Friday, November 27, 2009

Make yourself think

I was just googling "Clockwork Orange" (a movie that I saw as a young lass and was offended and yet mesmerised - the sets and costumes) and came upon this site,

http://projectgroupthink.wordpress.com/


Then I read this about the 10 movies that make you think. I must say, I love it!

These are some of the movies that I had watched, plan to watch again. So enjoy.

http://projectgroupthink.wordpress.com/2009/05/28/10-movies-that-make-you-think/

http://billsmovieemporium.wordpress.com/2009/05/24/review-a-clockwork-orange-1971/

Thursday, November 26, 2009

Yay? No?

Ah-har!

I found this absolutely great site from Today (Singapore's free tabloid, right?) that talks about music and concerts. Yay. And by the way, next year is going to be a great year for concert lovers because a lot of good acts' coming to Singapore.


http://blogs.todayonline.com/poparazzi/


I've got my tickets for Green Day and Muse. Aarrgh. So many concerts, so little money!

Monday, November 23, 2009

Parametric Curves

Geometric and Parametric Continuity

Geometric Continuity

* G0: curves are joined
* G1: first derivatives are proportional at the join point
The curve tangents thus have the same direction, but not necessarily the same magnitude. i.e., C1'(1) = (a,b,c) and C2'(0) = (k*a, k*b, k*c).
* G2: first and second derivatives are proportional at join point

Parametric Continuity

* C0: curves are joined, There may be a sharp point where they meet.
* C1: first derivatives equal, The curves have identical tangents at the breakpoint. (The tangent is the slope at the breakpoint.) The curves join smoothly. C1 curves also have positional continuity.
* C2: first and second derivatives are equal,
The curves have identical curvature at the breakpoint. (Curvature is defined as the rate of change of the tangents.) Curvature continuity implies both tangential and positional continuity.


If t is taken to be time, this implies that the acceleration is continuous.
* Cn: nth derivatives are equal

Thursday, November 19, 2009

Semester 3: Them

Animation & Simulation
Prof Normal

I guess, he's by far the most normal. Articulate, logical and well behaved. He's not fully research only when he says, "Resolution is just as important to determine the feasibility of the method proposed."
And really smart. He knows sometimes we don't really know what we're saying but he has never tried to embarrass us during our presentations. Cares about teaching, you just can tell. Great prof.
Oh ya, and he wears converse canvas and printed shirts. Score!
I'm hoping to do my dissertation with him.


Game
Prof Huh

Absent-minded. Funny. Knows a lot. He's a tenured professor. Thinks everything is extremely easy. Explains well. But just so busy he becomes forgetful.

Tuesday, November 3, 2009

GLUI Quick Guide from CodeProject

If you're unfortunate like me, only able to visualise algorithms with OpenGL, then the next thing to make the application less difficult to use is by defining some GUI.

I found this GLUI guide easy to use and refer to.

http://www.codeproject.com/KB/openGL/GLUI_Window_Template.aspx#6-AddGUIControls17

Sunday, November 1, 2009

A Few Tips on How to Use PowerPoint for Mathematical Presentations

I've included this tip from the link at the bottom of the post to help me with the equations in PowerPoint.. This is not my own post.

What These Are About

These tips may help you produce math-heavy PowerPoint presentations more efficiently, and get them to look better. They assume familiarity with the basics of PowerPoint. They do not argue for or against using PowerPoint for your presentations (there are many pros and cons). They were born out of a conversation among graduate students in the MIT theory group sometime in 1999 or 2000, when many of us were discovering PowerPoint and agreed that a page for sharing tips would be useful. Some of them are probably getting out of date as newer versions of PowerPoint come out.

They are maintained by Leonid Reyzin. Please contact me if you have additional tips you think should be included, or if you find something wrong (or no longer applicable).

Machine Independence

One of the biggest headaches with PowerPoint is the difficulty of getting it to look the same on different machines. To that end:
  • Make sure your file includes fonts. This is accomplished by going to the "File" menu, selecting "Save As," and checking the "Embed TrueType" check box in the dialog box that pops up. Then click "Save." Your file will likely become very large once you do this, and you may need to compress it to get it to fit a single floppy (see also "Miscellaneous PowerPoint Tips," below, for how to deal with large files).
  • If you use Equation Editor/MathType, you need to embed those fonts, as well. Unfortunately, PowerPoint doesn't know you are using those fonts simply because an equation is embedded (it treats equations as graphics); thus, you need to make sure that at least one character from each font used in your equations appears somewhere (e.g., on a special slide, or as white on white, or just a space) in an ordinary PowerPoint textbox. The fonts you are interested in are MTExtra, Euclid Math One and Euclid Math Two. Then use "Embed TrueType" option described above. (Thanks to Bob Mathews for the tip.)

Making Overlays

Get everything you want onto one slide, and get in its final form. Then split it into overlays as follows: copy it as many times as the number of overlays, and simply "hide" parts on each slide. To hide a part, change its color to white, or cover it up with a white rectangle. Do not delete text, because that will move other text around, and your overlays won't match. Instead, change its color to white.

Typesetting Math

One way to typeset mathematical formulas and symbols in PowerPoint is to use TexPoint add-in. I haven't tried it myself, but have heard good things about it. Just save often, because PowerPoint's tendency to crash apparently only increases when the add-in is used (in particular, when the LaTeX interpreter is closed improperly).

If you prefer to use "straight" PowerPoint, here are some tips.

  1. Getting it to look good
    • Italicize only what should be italicized. Generally, this means only Roman and Greek variable names (italicizing uppercase Greek is optional). Be sure to not italicize plus and minus signs, function like log and cos, numerals, parentheses, etc. If in doubt about what should be italicized in a particular formula, typeset it in LaTeX and then mimic LaTeX's output in PowerPoint. To toggle italics, just use Ctrl-i.
    • Use Times New Roman or a similar font. Sans serif fonts, such as Helvetica, are not good for math (although they may be good for the rest of your presentation). It's ok to have one font for math and another for the text (the slides class of LaTeX does that, in fact). To change fonts without using the mouse, use Ctrl-Shift-f and arrow keys.
    • You can also change fonts and styles by using the "format painter" button: simply get one character to look right, and then use the format painter to copy its format to other similar characters. (Thanks to Shane Scott for this tip.)
    • Do not use a hyphen for a minus sign. A much better minus sign is an en-dash. Unfortunately, it is a bit hard to get in PowerPoint. See "Inserting non-standard characters" below.
    • When you copy math around, make sure it has the same font size as the surrounding text. PowerPoint will not always automatically get it right.

  2. Inserting non-standard characters.
    • To insert Greek letters, simply type the "corresponding" Roman letter (e.g., "a" for alpha, "t" for tau, "q" for theta), and then change its font to Symbol. Same for "sum" and "product" symbols: simply use capital sigma and capital pi.
    • Standart Unicode symbols for integrals don't look any good. You may want to use the curve-line tool to make one and then copy it around. (Thanks to Nikola Venkov for this tip.)
    • To insert the many special symbols that are available in Microsoft Word (such as en- and em-dashes, ©, etc.), simply open up Microsoft Word, and insert them using the menu "Insert" then "Symbol." The "Special Characters" tab is particularly useful, and contains handy keyboard shortcuts. Once you get it in Microsoft Word, simply select it, copy it, and then paste into your PowerPoint text. Make sure the result has the correct font and size. Then you can copy it around your PowerPoint file whenever you need it.
    • More recent versions of PowerPoint have the "Symbol..." item in the "Insert" menu (the corresponding toolbar button is available, as well: see "Miscellaneous PowerPoint tips," below). You can insert characters from various fonts.
    • A host of characters is available in the "Character Map" accessory. (Go to the "Start" button, then "Applications," then "Accessories," then "Character Map.") Trying different fonts to find what you need; Symbol font is particularly useful for math. You can select and copy characters, then paste over to PowerPoint. Moreover, if you click on a particular character, you get the "keyboard code" for it displayed at the bottom. Once you learn the keyboard code, you can type it directly in PowerPoint without having to copy and paste. For example, the code for an en-dash (which is good for minus signs) in Times New Roman font is Alt-0150 (hold down Alt, press 0150 on the numeric keypad, then let go of Alt). The code may be different in other fonts.

  3. Subscripts and superscripts
    • To make subscripts and superscripts using the menus, select the character you need, then go to "Format" then "Font." Note that you can get double superscripts, subscripts of superscripts, etc., by varying the "offset" amount.
    • It is faster to make standard subscripts and superscripts using the keyboard. Ctrl-= toggles the subscript flag, and Ctrl-+ (same as Ctrl-Shift-=) toggles the superscript flag. For example, to get aixi, type "a, Ctrl-=, i, Ctrl-=, x, Ctrl-+, i, Ctrl-+" (don't forget to turn on italics at the beginning by "Ctrl-i").
    • You can also get buttons for making subscripts and superscripts on your toolbar. See "Miscellaneous PowerPoint Tips" below. Or you can use the format painter: get a single subscript to look right, and then copy its format to other subscripts (see "Getting it to look good" above).

  4. More complex formulas.
    • You may avoid using Equation Editor/MathType (see "Machine Independence" above) by utilizing multiple text boxes instead. You can move them around to get them in the right positions. Note that large parentheses, brackets, braces, and other useful shapes are available under "AutoShapes" (most likely on your drawing toolbar). Once you get a formula to look right, group all of its components (see "Drawing" below), so you can easily move it around and copy it.

Drawing

  • Learn to use "Group," "Ungroup" and "Regroup" in your "Draw" menu (also on your right-click menu). "Regroup" is particularly handy if you need to ungroup to modify something little. You don't have to reselect everything to group it back: simply choose "Regroup."
  • To select multiple objects, hold down the Shift key as you click on them with the mouse.
  • It is a pain to select text boxes, because when you click inside them, you get to edit text. If that happens, press "escape," and the text box becomes selected. Alternatively, hold down the Shift key as you click. Conversly, if you've selected a text box and now want to edit its text, press "enter."
  • It is often easier to nudge objects by selecting them and using arrow keys, rather than by using the mouse.
  • Connectors (available under "AutoShapes" on your drawing toolbar) are great when drawing graphs, trees, etc. They can be made to stick to an object, so when you move nodes around, edges adhere to them.

Layout and Design Tips

  • You do not have to be stuck with the standard boring slide style. Play around with it by going to the Edit menu, and selecting Master, then Slide Master.
  • When giving a talk that will be projected (rather than printed out on transparencies), the color combination that is easiest on the eyes is yellow (or white) on a blue background. (Thanks to Steven Rudich for this tip.)
  • To make small caps font style (equivalent to LaTeX's \textsc command), type in all uppercase letters. Then select all the letters you actually want to be in small caps (i.e., not the ones you want to actually be uppercase, such as first letters of sentences), and simply make the font about four points smaller. (Thanks to Amit Sahai for this tip.)
  • To start a new line without starting a new paragraph: press "Shift-Enter."

Miscellaneous PowerPoint Tips

  • You can customize your toolbars. In particular, it is handy to have buttons for "Format-Subscript," "Format-Superscript," and "Insert-Symbol." Go to the Tools menu, then Customize, then click on the "Commands" tab. Then simply find a command you want by looking at the various categories, and drag it out of the dialog directly onto a toolbar you want. (Thanks to Amit Sahai for this tip.)
  • If AutoCorrect annoys you (e.g., you have a variable named "i" and don't want PowerPoint to automatically capitalize it every time), check out the menu "Tools" then "AutoCorrect." If it doesn't annoy you but is just occasionally wrong, you can undo what it just corrected by pressing Ctrl-Z or selecting "Undo" in the "Edit" menu.
  • If you file is too large to fit on a single floppy and you need to take it with you, use the "Pack and Go" command in the File menu. Be sure to check the boxes that "Include linked files" and "Embed TrueType fonts" in the dialog boxes that follow. Prepare a large box of floppies, as PowerPoint manages to only enlarge your file as it "compresses" it. However, the packing and restoration procedure is automated, and beats trying to split the file into multiple chunks yourself. Don't forget to label the floppy disks in numerical order; run the application that is included on the first floppy to restore the file to another computer.

http://www.cs.bu.edu/~reyzin/pptips.html

Thursday, October 29, 2009

Tuesday, October 20, 2009

Sunday, October 18, 2009

Maya: Render from command line

You know, normally we will render our scenes from:

[Rendering]

Render --> Batch Render.

However that involves opening our maya application overnight.

Here's how to render from command line:

go to the directory where the mb/ma file resides.

render <filename>

That is assuming that you've got all your file properties set correctly for rendering.
Easy eh?

More help here: http://www.wonderhowto.com/how-to/video/how-to-render-maya-scenes-from-the-command-line-249001/

Maya: Motion along path

Needed a short animation for motion along path to simulate running across forest.
Ah-har! This helps! Basically motion of camera along a certain path.
Phew! Thanks!

http://caad.arch.ethz.ch/info/maya/manual/UserGuide/Animation/KeyframeMoPath/06_animating_motion_paths.doc2.html


Basic animation how to:
http://www.expertrating.com/courseware/mayacourse/MAYA-Animation-Basics-1.asp

Monday, October 5, 2009

Creating mathematical symbols with MS Word

There are four sections to this document

  • Before you can use the Equation Editor
  • (Very) Basic operation of the Equation Editor
  • Shortcut Keys are your very best friend
  • Simonds tips on using the equation editor
Before you can use the Equation Editor

The other three sections of this document will work only if the Microsoft Equation Editor has been installed on the machine you are using; the Equation Editor comes with Microsoft Office but is not installed under a standard installation. The computers in the Sylvania CRC and Sylvania math classrooms all have the Equation Editor installed. On your home machine you probably will need to load your Microsoft office CD and do a custom install to install the Equation Editor. (It's easier to do than the phrase "custom install" implies. J ) All of the maneuvers described in this section of the document will need to be done at most once.

After installing the Equation Editor, you also want to customize your toolbar so that the Equation Editor button is easily accessible. (The button is already on the CRC and math classroom machines.)

The menu shown in Figure 1 was opened by selecting Tools - Customize from the toolbar menu across the top of the screen, then selecting the commands file-tab at the top of the dialogue box, then selecting the insert category on the left side of the box, and finally scrolling down on the right-side of the box until the Equation Editor button was in view. Once you have located the Equation Editor button, left-click and drag the button up to your toolbar menu.

Figure 1: Customizing your Toolbar

(Very) Basic operation of the Equation Editor

Once your Equation Editor button is in place, all you need to do to open an Equation Box is left-click that button. Upon your click an Equation Box like that shown in Figure 2 will appear as well as the Equation Editor Menu shown in Figure 3. (As a side note I should mention that the Equation Editor Menu has the unfortunate habit of sometimes opening directly on top of the location at which you are typing. L Should this happen, simply left-click and drag the solid strip across the top of the box until the box is out of the way.)


Figure 2: Equation Box

Figure 3: Equation Editor Menu
The Equation Editor Menu can be used to insert both symbols and templates for complicated mathematical expressions. For example, Figure 4 shows what you click to insert the Pi symbol; Figure 5 shows what to click to insert a fraction template.
Figure 4: Inserting a Pi symbol


Figure 5: Inserting a Fraction Template

Once a template has been inserted into your Equation Box, you need to look and see where inside the template the cursor is flashing. You then go ahead and type the information that goes into that location. To move to the next location in the template you press the Tab key. You also press the Tab key to exit the template. When you are done typing in your expression, you left-click anywhere outside of the Equation Box. If you need to edit an existing Equation Box you simply double-click anywhere over the expression contained within the box.

Shortcut Keys are your very best friend

Mousing all of your math symbols and templates gets real old real fast; thankfully there are shortcut keys that enable you to avoid your mouse in most circumstances. The shortcut keys are found in the Help Menu when you have an Equation Box open. I have copied the most commonly used shortcut keys into figures 6, 7, and 8.
Figure 6: Shortcut Keys for selected Math Templates

Figure 7: Shortcut Keys for after the fact symbol Embellishments

Figure 8: Shortcut keys for selected math symbols

Simonds tips on using the equation editor

  • Always add a full space before and after an equal sign, before and after a plus or minus sign, after a limit sign or integral sign, and before each limit on a definite integral. A full space is created inside an equation box by pressing Ctrl+Shift+Space Bar.
  • Always add a half space between a coefficient and a variable and before and after the arrow sign in a limit. A half space is created by pressing Ctrl+Space Bar.
  • To line up your equal signs (J ) you need to use the format/align option shown in Figure 9.

Figure 9: Gotta' line up them equal signs!
  • You can add text inside an Equation box by selecting Style - Text from the toolbar menu. (See Figure 10.)

Figure 10: Adding text inside an Equation Box
  • Sometimes you might want to insert text along with a multistep simplification or other type process. One way to achieve this is with a matrix. For example, the simplification shown in Figure 11 was typed using a matrix with 7 rows and two columns. The style used in the left column was "Math" while the style used in the right column was "Text." I always insert a blank row between every line to avoid crowding - that's why the matrix had seven rows as opposed to four. The appropriate Menu and Dialogue Box are shown in Figures 12 and 13.

Figure 11: Adding text along with mathematics

Figure 12: The Matrix Menu Bar

Figure 13: The Matrix Dialogue Box

Finally, you will find below is a keystroke guide for creating the expression .

  1. Open an Equation Box
  2. press Ctrl+t, u
  3. type in "lim" (don't type the quotes J )
  4. press Tab
  5. type in "h"
  6. press Ctrl+Space Bar
  7. press Ctrl+k, a
  8. press Ctrl+Space Bar
  9. type in "0"
  10. press Tab
  11. press Ctrl+Shift+Space Bar
  12. press Ctrl+f
  13. press Ctrl+9
  14. type in "3"
  15. press Ctrl+shift+Space Bar
  16. type in "+"
  17. press Ctrl+shift+Space Bar
  18. type in "h"
  19. press Tab
  20. press Ctrl+h
  21. type "2"
  22. press Tab
  23. press Ctrl+Shift+Space Bar
  24. type in "-"
  25. press Ctrl+Shift+Space Bar
  26. type in "9"
  27. press Tab
  28. type in "h"
  29. press Tab
  30. click anywhere outside the Equation Box to close the equation box
Blatantly copied from: http://spot.pcc.edu/~ssimonds/thisandthat/msword.htm

Thursday, October 1, 2009

Sunday, September 27, 2009

Career in Game Development Industry - How to get a foot in?

Here's a short read on that.

http://www.jenrickblog.co.uk/2009/09/career-development-in-the-video-gaming-sector-what-skills-do-developers-need-to-excel-please-contribute-to-this-research-paper/#more-1552

Another insight from LinkedIn:

From the Art Pipline perspective I'd say the most important skills are zBrush/Mudbox and 3ds Max/Maya. However knowing those programs does not mean a candidate will stand out. They must understand the pipeline and where they fit in. The artist must be capable and willing to learn custom tools outside of their everyday arsenal of off the shelf products. zBrush/Mudbox Artist must be masters of sculpting and then if required retopoing meshes from the ground up. They should not be afraid of mastering the UV procoess using pelt-mapping and 3D painting solutions. Level designers should prove that they can texture and build environments to a certain scale. Character Artists must study and master anatomy. If I'm an environment artist I should want to show a fully realized world that is playable. Tools such as Unreal Engine 3.0 and Cry Engine 2.0 allow for modelers and texture artists to show their assets in a true game environment rather than just showing a turn table with music playing behind it. It's also helpful to understand how to export normal maps and bump maps for games. A healthy understanding of repeating textures and decals is important as well. Environment artists should envision and create massive detailed set pieces with as limited geometry as is possible. Artists should find the most efficient techniques for limiting the amount of polygons in a scene. Character Artists should attempt hair and fur by using opacity mapped textures. These things which are not easily rendered in real-time will stand out to those in the industry.

I hope this is helpful.

Joseph Tresca Sr. Interactive Art Director, 3D Artist, Eyeballistic, Inc.

Tuesday, September 22, 2009

Animation Paper Reading

This semester, one of the smaller assignments is a paper reading of any Siggraph worthy animation papers.

I've chosen Treuille's Model Reduction of Fluids. Thing is, I am quite taken with his research and work. But ugh... this is a hard paper. For now... And submission is in 2 weeks' time!

See all his work here:

http://www.cs.cmu.edu/~treuille/

Thursday, August 13, 2009

A graduate school survival guide: "So long, and thanks for the Ph.D.!"

Brief description

A computer science graduate school survival guide, intended for prospective or novice graduate students. This guide describes what I wish I had known at the start of graduate school but had to learn the hard way instead. It focuses on mental toughness and the skills a graduate student needs. The guide also discusses finding a job after completing the Ph.D. and points to many other related web pages.


"So long, and thanks for the Ph.D.!"

a.k.a.

"Everything I wanted to know about C.S. graduate school
at the beginning but didn't learn until later."

The 4th guide in the Hitchhiker's guide trilogy
(and if that doesn't make sense, you obviously have not read Douglas Adams)

by Ronald T. Azuma

v. 1.08

Original version 1997, last revised January 2003

http://www.cs.unc.edu/~azuma/hitch4.html

Wednesday, July 29, 2009

Windows Movie Maker: Superimpose xml

Found that superimposing image over video is not so intuitive in Movie Maker. Will try it out tonight!

Here's an example found on: http://www.windowsmoviemakers.net/Forums/ShowPost.aspx?PostID=194964&


<title name="PapaJohn Overlay 25" iconid="13">
<param name="InternalName" value="TitleStandard">
<param name="Description" value="Superimpose image 1">
<param name="LogoBitmapFilename" value="Overlay25.png">
<param name="LogoRect" value="0.00 0.00 1.00 1.00">
<paragraph>
<param name="IsOneLine" value="true">
<param name="BoundingRect" value="1.00 1.00 1.00 1.00">
<param name="MaxCharacterCount" value="32">
</paragraph>
</title>
<title name="PapaJohn Overlay 26" iconid="13">
<param name="InternalName" value="TitleStandard">
<param name="Description" value="Superimpose image 2">
<param name="LogoBitmapFilename" value="Overlay26.png">
<param name="LogoRect" value="0.00 0.00 1.00 1.00">
<paragraph>
<param name="IsOneLine" value="true">
<param name="BoundingRect" value="1.00 1.00 1.00 1.00">
<param name="MaxCharacterCount" value="32">
</paragraph>
</title>
<title name="PapaJohn Overlay 27" iconid="13">
<param name="InternalName" value="TitleStandard">
<param name="Description" value="Superimpose image 1">
<param name="LogoBitmapFilename" value="Overlay27.png">
<param name="LogoRect" value="0.00 0.00 1.00 1.00">
<paragraph>
<param name="IsOneLine" value="true">
<param name="BoundingRect" value="1.00 1.00 1.00 1.00">
<param name="MaxCharacterCount" value="32">
</paragraph>
</title>
</titledll>
</titles>
</transitionsandeffects>

Tuesday, June 23, 2009

Simple things like find

http://www.softpanorama.org/Tools/Find/find_mini_tutorial.shtml

Unix find is a pretty tricky but very useful utility that can often fool even experienced UNIX professionals with ten on more years of sysadmins work under the belt. It can enhance functionality of those Unix utilities that does not include tree traversal (BTW GNU grep has -r option for this purpose and can be used on its own to perform tree traversal task: grep -r "search string" /tmp.). There are several versions of find with the main two being POSIX find used in Solaris, AIX, etc and GNU find used in linux. GNU find can be installed on Solaris and AIX and it is actually a strong recommendation as there are some differences; moreover gnu find have additional capabilities that are often useful.

But find can do more then a simple tree traversal available with option -r (or -R) in many Unix utilities. Traversal provided by find can have excluded directory tree branches, can select files or directories using regular expressions, can be limited to specific typed of filesystem, etc. This capability is far above and beyond regular tree traversal of Unix utilities so find is a real Unix utility -- a useful enhancer of functionally of other utilities including both utilities that do not have capability to traverse the directory tree and those which have built-in simple recursive tree traversal

The idea behind find is extremely simple: this is a utility for searching files using the directory information and in this sense it is similar to ls. But it is more powerful then ls as it can provide " a ride" for other utilities and has an idiosyncratic mini-language for specifying queries, the language which probably outlived its usefulness but nobody has courage to replace it with a standard scripting language.

For obscure historical reasons find mini-language is completely different from all other UNIX commands: it has full-word options rather than single-letter options. For example, instead of a typical Unix-style option -f to match filenames (like in tar -xvf mytar.tar) find uses option -name. Also path to search can consist of multiple starting points, for example

find /usr /bin /sbin /opt -name sar # here we exclude non-relevant directories

In general you need to specify the set of starting points for a search through the file system first. The first argument starting with "-" is considered to be a start of "find expression". The latter can have side effects if you specified actions in the expression.

It is very important to understand that you can specify more than one directory as a starting point for the search. To look across the /bin and /var/html directory trees for filenames that contain the pattern *.htm*, you can use the following command:

find /usr /var/html -name "*.htm*" -print

Please note that you need quotes for any regex. Otherwise it will be evaluated immediately in the current context by shell.

It is simply impossible to remember all the details of this language unless you construct complex queries each day and that's why this page was created. Along with this page it make sense to consult the list of typical (and not so typical) examples which can be found in in Examples page on this site as well as in the links listed in Webliography. An excellent paper Advanced techniques for using the UNIX find command was written by Bill Zimmerly. I highly recommend to read it and then print and have a reference. Several examples in this tutorial are borrowed from the article.

The full find language is pretty complex and consist of several dozens of different predicates and options. There are two versions of this language: one implemented in POSIX find and the second implemented in GNU find which is a superset of POSIX find. That can make big difference in complex scripts. But for interactive use the differences is minor: only small subset of options is typically used on day-to-day basis by system administrators. Among them:

  • -name True if pattern matches the current file name. Simple regex (shell regex) may be used. A backslash (\) is used as an escape character within the pattern. The pattern should be escaped or quoted. If you need to include parts of the path in the pattern in GNU find you should use predicate wholename

    Use the -iname predicate (GNU find supports it) to run a case-insensitive search, rather than just -name. For example:

     $ find . -follow -iname '*.htm' -print0 | xargs -i -0 mv '{}' ~/webhome

    Usage of -print0 is a simple insurance for the correct processing of files with spaces.

  • -fstype type True if the filesystem to which the file belongs is of type type. For example on Solaris mounted local filesystems have type ufs (Solaris 10 added zfs). For AIX local filesystem is jfs or jfs2 (journalled file system). If you want to traverse NFS filesystems you can use nfs (network file system). If you want to avoid traversing network and special filesystems you should use predicate local and in certain circumstances mount
  • "-atime/-ctime/-mtime" [+|-]n
    Specify selection of the files based on three Unix timestamps: the last time a files's "access time", "file status" and "modification time".
    n
    is time interval -- an integer with optional sign. It is measured in 24-hour periods (days) or minutes counted from the current moment.
    • n: If the integer n does not have sign this means exactly n 24-hour periods (days) ago, 0 means today.
    • +n: if it has plus sing, then it means "more then n 24-hour periods (days) ago", or older then n,
    • -n: if it has the minus sign, then it means less than n 24-hour periods (days) ago (-n), or younger then n. It's evident that -1, and 0 are the same and both means "today".

    Note: If you use parameters with find command in scripts be careful when -mtime parameter is equal zero. Some (earlier) versions of GNU find incorrectly interpret the following expression

    find -mtime +0 -mtime -1
    which should be equivalent to
    find  -mtime -1
    but does not produce any files
    • n: If the integer n does not have sign this means exactly n 24-hour periods (days) ago, 0 means today.
    • +n: if it has plus sing, then it means "more then n 24-hour periods (days) ago", or older then n,
    • -n: if it has the minus sign, then it means less than n 24-hour periods (days) ago (-n), or younger then n. It's evident that -1 and 0 are the same and both means "today".
    • Examples:
      • Find everything in your home directory modified in the last 24 hours:
        • find $HOME -mtime -1
      • Find everything in your home directory modified in the last seven 24-hour periods (days):
        • find $HOME -mtime -7
      • Find everything in your home directory that have NOT been modified in the last year:
        • find $HOME -mtime +365
      • To find html files that have been modified in the last seven 24-hour periods (days), I can use -mtime with the argument -7 (include the hyphen):
        find . -mtime -7 -name "*.html" -print

        If you use the number 7 (without a hyphen), find will match only html files that were modified exactly seven 24-hour periods (days) ago:

        find . -mtime 7 -name "*.html" -print
      • To find those html files that I haven't touched for at least seven 24-hour periods (days), I use +7:
        find . -mtime +7 -name "*.html" -print
  • -newer/-anewer/-cnewer baseline_file The time of modification, access time or creation time are compared with the same timestamp in the baseline file. If file is a symbolic link and the -H option or the -L option is in effect, the modification time of the file it points to is always used.
    • -newer Modification time is compared with modification time of the basline_file True if file was modified more recently than baseline file.
    • -anewer Access time is compared with access time of basline_file . True if file was last accessed more recently than baseline file.
    • -cnewer Creation file is compared. For example: find everything in your home that has been modified more recently than "~joeuser/lastbatch.txt ":
      • find $HOME -newer ~joeuser/lastbatch.txt
  • -local True if the file system type is not a remote file system type. In Solaris those types are defined in the /etc/dfs/fstypes file. nfs is used as the default remote filesystem type if the /etc/dfs/fstypes file is not present. The -local option skips the hierarchy of non-local directories. You can also search without descending more then certain number of levels as explained later or exclude some directories from the search using
  • -mount Always true. Restricts the search to the file system containing the directory specified. Does not list mount points to other file systems.
  • -xdev Same as the -mount primary. Always evaluates to the value True. Prevents the find command from traversing a file system different from the one specified by the Path parameter.
  • -xattr True if the file has extended attributes.
  • -wholename simple-regex [GNU find only] . File name matches simple regular expression (often called shell patterns). In simple regular expressions the metacharacters '/' and '.' do not exist; so, for example, you can specify:
    find . -wholename '/lib*'
    which will print entries from directories /lib64 and /lib. To ignore the directories specified, use option -prune For example, to skip the directory /proc and all files and directories under it (which is important for linux as otherwise errors are produced you can something like this:
    find . -wholename '/proc' -prune -o -name file_to_be_found   
    If you administer a lot of linux boxes it is better to create alias ff:
    if [[ `uname` == "Linux" ]] ; do

    alias ff='find . -wholename '/proc' -prune -o -name '

    else

    ff='find . -name ' # not GNU find does not support -wholename

    fi

Other useful options of the find command include:

  1. -regex regex [GNU find only] File name matches regular expression. This is a match on the whole pathname not a filename. Stupidly enough the default regular expressions understood by find are Emacs Regular Expressions, not Perl regular expressions. It is important to note that "-iregex" option provide capability to ignore case.
  2. -perm permissions Locates files with certain permission settings. Often used for finding world-writable files or SUID files. See below
  3. -user Locates files that have specified ownership. Option -nouser locates files without ownership. For such files no user in /etc/passwd corresponds to file's numeric user ID (UID). such files are often created when tar of sip archive is transferred from other server on which the account probably exists under a different UID)
  4. -group Locates files that are owned by specified group. Option -nogroup means that no group corresponds to file's numeric group ID (GID) of the file
  5. -size Locates files with specified size. -size attribute lets you specify how big the files should be to match. You can specify your size in kilobytes and optionally also use + or - to specify size greater than or less than specified argument. For example:
    find /home -name "*.txt" -size 100k 
    find /home -name "*.txt" -size +100k 
    find /home -name "*.txt" -size -100k 

    The first brings up files of exactly 100KB, the second only files greater than 100KB, and the last only files less than 100KB.

  6. -ls list current file in `ls -dils' format on standard output.
  7. -type Locates a certain type of file. The most typical options for -type are as following:
    • d -Directory
    • f - File
    • l - Link

    For example to find a list of the directories use can use the -type specifier. Here's one example:

    find . -type d -print

Tuesday, June 2, 2009

Oooooh.... Beautiful....

I fell into this site by chance: http://kaba.hilvi.org/
And I am ok impressed.

But the links....

cgafaq wiki

The plethora of source codes.... Oh.... I am going to pee in my pants...

http://www.geometrictools.com/index.html

Seriously... I mean pee like a broken damnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn.

And look at the resources link provided:

http://www.geometrictools.com/Resources/Links.html

OpenGL: glLineWidth

//set line width
glLineWidth(20.0f);

glBegin(GL_LINES);

//draw vertices
glVertex3f (-10f, -10.0f, -10.0f);
glVertex3f (10f, 10.0f, 10.0f);

....

glEnd();


Note that not all hardware supports a line width of 20. To find out the supported range and line width increments call:

float sizes, increment;

glGetFloatv(GL_LINE_WIDTH_RANGE, sizes)
glGetFloatv(GL_LINE_WIDTH_GRANULARITY, &increment)

Modules selection

Ok, I've decided. This is the way I am going to pace my modules for Year 2.

Next Sem: Y2 S1
Computer Animation and Simulation
3D Modelling and Reconstruction

Y2 S2
Human Computer Interaction
Scientific Visualization

Y2 S3
Introduction to Games Design
BI6129 Directed Reading


I am actually quite excited for school. Hehe.

Monday, June 1, 2009

YAY! I Passed~~

You look drunk.
Yes, I am drunk. On happiness.
No, you really look drunk.
Oh yes. I am going to write a one hit wonder. And get so rich on it, I don't need to work. Oh yes... That sounds perfect.
Stop eating the gummy. You're getting a sugar high.

Thursday, May 21, 2009

Vista TWEAKS

Without much emotional attachment, I am now on Vista. The good thing is, most softwares install on this OS. Bad? I am still getting around the flow of it. But gosh... talk about fancifully slow.

So here are some guides on tweaking and optimising which I cannot guarantee works.

At least my batch scripts still works here. Hehe. Cool...


http://www.tweakhound.com/vista/tweakguide/page_2.htm

http://www.iamshadowlord.com/2007/06/windows-vista-optimization.html



Getting rid of that annoying activeX popup in Alex, under "Removing the Internet Explorer Toolbar Alert":

http://www.databoysoftware.com/allow.html

Sunday, April 12, 2009

Music to listen to while you're studying

And perhaps the neighbours are noisy and you needed to cancel them out, or you just don't want to fall asleep.

How to categorise that?
1. Not too slow or soft or soothing that you might fall asleep.
2. Nothing and I mean nothing that can distract you, (so you should not listen to any songs in languages that you understand or can sing along to).

These are the choices given by some people:

1. Brian Eno - Music for Airports

2. Boards of Canada -- > ooh I've been meaning to get their music.

3. Sigur Ros - They make me trip. I can't use this for studying.

4. Chicane - Ooh nice... must get their music.

5. Kaskade - Nice nice... Must get them too!!

6. Cirque du Soleil - oooooo?



Someone suggested these:
  • Sigur Rós - any of their albums are great, especially their b-sides/EPs
  • Mogwai
  • Boards of Canada as mentioned
  • Haibane Renmei - "Hanenone" - excellent soundtrack to an excellent anime
  • Any of the Final Fantasy Piano Collections (well, except IV and V, they're pretty unimaginative)
  • Film scores (particular favorites of mine are "Final Fantasy: The Spirits Within," "Crouching Tiger, Hidden Dragon," "Hero," "American Beauty," and "Crash")
I must say, Mac users are way cooler.... Their suggestions are good!! http://forums.macrumors.com/showthread.php?t=249125



http://www.amazon.com/Music-Listen-While-Youre-Studying/lm/CTMB4VPEAPU9


http://www.amazon.com/Trippy-chill-stoner-music/lm/1VQIBDTM9AQMU

My personal all time favourite has to be JAM and Yuki Isoya (solo effort), Shiina Ringo (given to me by accident). When I hear JAM, I just want to start Xcode or pick up my notes.

Animation: Classical Framework

In the classical animation framework, they're 4 models; 2 stimulus and 2 response.

Stimulus
1. Environment Model: Animation's environment where static and dynamic objects are created. Includes modeling and rendering.

2. Perception Model: Techniques of "perception" by the characters. Information detected by the character's sensory capabilities.
i. zonal approach
ii. sensory approach
iii. synthetic vision approach.

Response
3. Behavioural Model: Behavioural techniques provide the characters with ability to autonomous activity with its own decision. This can either be reactive or driven by internal desire/experiences (not so much Artificial Intelligence, but more Artificial Life....? )
i. Rule-based approach
ii. Network approach
iii. Artificial Intelligence approach
iv. Mathematical approach

4. Motor Model: Movement techniques - to move & animate the characters. Not related to planning of movement, that is done in behavioural model.
i. Basic dynamic approach
ii. Procedural approach


More references:
http://www.red3d.com/cwr/boids/

Wednesday, April 8, 2009

Friday, March 27, 2009

A historical timeline for Computer Graphics & Animation

http://sophia.javeriana.edu.co/~ochavarr/computer_graphics_history/historia/

Matrix Vector hints

Matric and various vector math hints and tips.
-------------------------------------------------------------------------------
General Matrix calculation is by

[x,y,z] * M => [x',y',z']

|x| |x'|
or M * |y| => |y'|
|z| |z'|

The result is the same in either case. As long as the matrix was created using
row vectors OR column vectors to match!

Which style is used is up to the matrix library version you use. I prefer
the former, which The perl Math::MatrixReal library seems to like the later.
Just note the order.


-------------------------------------------------------------------------------
Matrix and what the terms actually mean...

From the povray matrix page..
http://enphilistor.users4.50megs.com/matrix.htm

Generally a matrix is defined (at least in Povray) as...

| A.x A.y A.z 0 |
| B.x B.y B.z 0 |
| C.x C.y C.z 0 |
| D.x D.y D.z 1 |

This can be thought of a a matrix of four (row) vectors A, B, C, D
where A = | A.x, A.y, A.z, 0 | etc. (NB: A.x is the x component of A)

What this matrix does is wrap the 3D space so that the X axis moves (rotates,
scales, shear, etc) to vector A, ditto for Y -> B and Z -> C. The last vector
D is the new location for the Origin (translate).

As the page above specifies this means that if you create a set of orthogonal
vectors A,B,C general rotations are very easy to do, and goes on to provide a
two part solution to rotating any general vector to any other general vector
(while retaining an general up direction).

-------------------------------------------------------------------------------
Orthogonal Matrices

A matrix is orthogonal if each of the three vectors making up the matrix
are orthogonal. That is they are all perpenducular to each other.

This is true of all rotation matrices (no scaling or shear).

What is interesting is that the inverse of such matrices is also its
transpose. And that matrix in itself is also orthogonal.

This means if we have a rotation matix

| A.x A.y A.z |
| B.x B.y B.z |
| C.x C.y C.z |

To rotate the x,y,z axises to the A,B,C vectors, then it so happens that
the inverse (rotate A,B,C vectors to the x,y,z axises) is the matrixes
transpose (diagonal mirror).

| A.x B.x C.x |
| A.y B.y C.y |
| A.z B.z C.z |

-------------------------------------------------------------------------------
Rotation Matrices are...

Normilized or Each row or column are unit vectors (vector length = 1)
Orthogonal or Dot product of any row to to any other row
or column to column is 0
EG: All row or column vectors are perpendicular to each other
Its Inverse is also its Transpose (due to orthogonality)

-------------------------------------------------------------------------------
Rotation Matrix about axis (x,y,z) and angle a

Given that s = sin(a) c = cos(a) t = (1 - cos(a))
and x, y, z defines the axis you want to rotate around
then, the rotation matrix is...

| txx+c txy+sz txz-sy |
R = | txy-sz tyy+c tyz+sx |
| txz+sy tyz-sx tzz+c |

For very small angles (and you later occasionally re-normalize)
A technique often used for interactive rotations using a mouse.
Then s = sin(a) => a c = cos(a) => 1 t => 0
and thus rotation becomes
| 1 za -ya |
R = | -za 1 xa |
| ya -xa 1 |

Given a orthogonal rotation matrix
Then the axis and angle of rotation can be found using...

cos(a) = ( R[0][0] + R[1][1] + R[2][2] - 1 ) / 2

axis = ( R[1][2]-R[2][1], R[2][0]-R[0][2], R[0][1]-R[1][0] ) / 2*sin(a)

-------------------------------------------------------------------------------
General Rotatation of a unit vector V to unit vector W
(rotation in same plain as both vectors - ie: the minimal rotation)

This is complex and difficult if you try to generate it using the
above general axis and angle method. The following generates it faster
and more simply, without need for sin() and cosin() functions, using the
meaning of the three vectors in a roatation matrix.

To do this requires three steps...

1/ Matrix to rotate the Vector V onto some arbatary axis (eg: X)
but such that the vector W also rotates to W' in the XY plan!
2/ One to rotate about the Z axis so that the rotated vector V'
(which is now at the X axis) is rotated to W' in that frame work.
3/ Rotate back to the original axis frame work by using the
inverse (transpose) of the original rotation.

First Step
It is easier to calculate the last step and invert the matrix, so...

We need to find two more unit vectors orthogonal to the original
vector V. One of these vectors must be the axis of rotation
so it can be moved to the Z axis for the second step.

Find the axis of rotation N
N = normalised ( V x W )
And the other orthogonal axis to complete the axis frame work.
M = N x V (note M is unit length as N and V are orthoginal)
alturnativally...
M = normailzed( V x W x V )

to rotate the X Y Z axis to this frame work would thus be...
| Vx, Vy, Vz |
Q = | Mx, My, Mz | (NB: a matrix of row vectors)
| Nx, Ny, Nz |
But for this step we want to do the oppisite! So inverse the orthogonal
matrix by transposing (diagonal flip). So the first step is....
transpose(Q)

Second Step
The new location of V (or V') which is now the X axis, needs to be rotated
around Z (now the axis of rotation), to the new location of W or W'

W' = W * transpose(Q)

As the Z axis does not rotate we only need the new location of the Y
axis in this step to complete this step.

Y' = W' Zrotate(90deg)
= Z x W'

The actual rotaton matrix in this axis framework is thus...
| W'x, W'y, W'z |
T = | Y'x, Y'y, Y'z |
| Zx, Zy, Zz | <- This is just (0, 0, 1)

Third Step
We just rotate back to the original coordinate system...
This was the original matrix Q calculated in step one.


The completed rotation matrix is thus..

Rotate_V_to_W = R = transpose(Q) * T * Q


===============================================================================

The following is vector stuff, not matrix...

-------------------------------------------------------------------------------
Distance of a point to a line.

Given line AB, Point C some distance away.
Minimim distance of C to line (perpendicular to line)

r = (AB . AC) / |AB|^2

WRONG: that is the distance of C from A in the direction of A to B!
That is length along the line!

-------------------------------------------------------------------------------


From http://www.cit.gu.edu.au/~anthony/info/graphics/matrix_vector.hints

Thursday, March 26, 2009

Some info on Matrix & Quaternion... need to consolidate with the other posts

http://www.j3d.org/matrix_faq/matrfaq_latest.html

Perl RegEx reference

Conventions

The following conventions are used in the examples.

   metacharacter(s) ;; the metacharacters column specifies the regex syntax being demonstrated
=~ m// ;; indicates a regex match operation in perl
=~ s/// ;; indicates a regex substitution operation in perl

Also worth noting is that these regular expressions are all Perl-like syntax. Standard POSIX regular expressions are different.

[edit] Examples

Unless otherwise indicated, the following examples conform to the Perl programming language, release 5.8.8, January 31, 2006. The syntax and conventions used in these examples coincide with that of other programming environments as well (e.g., see Java in a Nutshell - Page 213, Python Scripting for Computational Science - Page 320, Programming PHP - Page 106 ).

Metacharacter(s) Description Example
Note that all the if statements return a TRUE value
. Normally matches any character except a newline. Within square brackets the dot is literal.
$string1 = "Hello World\n";
if ($string1 =~ m/...../) {
print "$string1 has length >= 5\n";
}
( ) Groups a series of pattern elements to a single element. When you match a pattern within parentheses, you can use any of $1, $2, ... later to refer to the previously matched pattern.
$string1 = "Hello World\n";
if ($string1 =~ m/(H..).(o..)/) {
print "We matched '$1' and '$2'\n";
}

Output:

We matched 'Hel' and 'o W';

+ Matches the preceding pattern element one or more times.
$string1 = "Hello World\n";
if ($string1 =~ m/l+/) {
print "There are one or more consecutive letter \"l\"'s in $string1\n";
}
Output:

There are one or more consecutive letter "l"'s in Hello World

? Matches the preceding pattern element zero or one times.
$string1 = "Hello World\n";
if ($string1 =~ m/H.?e/) {
print "There is an 'H' and a 'e' separated by ";
print "0-1 characters (Ex: He Hoe)\n";
}
? Modifies the *, +, or {M,N}'d regexp that comes before to match as few times as possible.
$string1 = "Hello World\n";
if ($string1 =~ m/(l.+?o)/) {
print "The non-greedy match with 'l' followed by one or ";
print "more characters is 'llo' rather than 'llo wo'.\n";
}
* Matches the preceding pattern element zero or more times.
$string1 = "Hello World\n";
if ($string1 =~ m/el*o/) {
print "There is an 'e' followed by zero to many ";
print "'l' followed by 'o' (eo, elo, ello, elllo)\n";
}
{M,N} Denotes the minimum M and the maximum N match count.
$string1 = "Hello World\n";
if ($string1 =~ m/l{1,2}/) {
print "There exists a substring with at least 1 ";
print "and at most 2 l's in $string1\n";
}
[...] Denotes a set of possible character matches.
$string1 = "Hello World\n";
if ($string1 =~ m/[aeiou]+/) {
print "$string1 contains one or more vowels.\n";
}
| Separates alternate possibilities.
$string1 = "Hello World\n";
if ($string1 =~ m/(Hello|Hi|Pogo)/) {
print "At least one of Hello, Hi, or Pogo is ";
print "contained in $string1.\n";
}
\b Matches a word boundary.
$string1 = "Hello World\n";
if ($string1 =~ m/llo\b/) {
print "There is a word that ends with 'llo'\n";
} else {
print "There are no words that end with 'llo'\n";
}
\w Matches an alphanumeric character, including "_".
$string1 = "Hello World\n";
if ($string1 =~ m/\w/) {
print "There is at least one alphanumeric ";
print "character in $string1 (A-Z, a-z, 0-9, _)\n";
}
\W Matches a non-alphanumeric character, excluding "_".
$string1 = "Hello World\n";
if ($string1 =~ m/\W/) {
print "The space between Hello and ";
print "World is not alphanumeric\n";
}
\s Matches a whitespace character (space, tab, newline, form feed)
$string1 = "Hello World\n";
if ($string1 =~ m/\s.*\s/) {
print "There are TWO whitespace characters, which may";
print " be separated by other characters, in $string1";
}
\S Matches anything BUT a whitespace.
$string1 = "Hello World\n";
if ($string1 =~ m/\S.*\S/) {
print "There are TWO non-whitespace characters, which";
print " may be separated by other characters, in $string1";
}
\d Matches a digit, same as [0-9].
$string1 = "99 bottles of beer on the wall.";
if ($string1 =~ m/(\d+)/) {
print "$1 is the first number in '$string1'\n";
}

Output:

99 is the first number in '99 bottles of beer on the wall.'

\D Matches a non-digit.
$string1 = "Hello World\n";
if ($string1 =~ m/\D/) {
print "There is at least one character in $string1";
print " that is not a digit.\n";
}
^ Matches the beginning of a line or string.
$string1 = "Hello World\n";
if ($string1 =~ m/^He/) {
print "$string1 starts with the characters 'He'\n";
}
$ Matches the end of a line or string.
$string1 = "Hello World\n";
if ($string1 =~ m/rld$/) {
print "$string1 is a line or string ";
print "that ends with 'rld'\n";
}
\A Matches the beginning of a string (but not an internal line).
$string1 = "Hello\nWorld\n";
if ($string1 =~ m/\AH/) {
print "$string1 is a string ";
print "that starts with 'H'\n";
}
\Z Matches the end of a string (but not an internal line).
$string1 = "Hello\nWorld\n";
if ($string1 =~ m/d\n\Z/) {
print "$string1 is a string ";
print "that ends with 'd\\n'\n";
}
[^...] Matches every character except the ones inside brackets.
$string1 = "Hello World\n";
if ($string1 =~ m/[^abc]/) {
print "$string1 contains a character other than ";
print "a, b, and c\n";
}


http://en.wikipedia.org/wiki/Regular_expression_examples

Sunday, March 22, 2009

Thursday, March 19, 2009

Semester 2: Them

Animation
Prof Q

"How's my english? Ok?"
"A lot of maths har? It's not my fault. It's your fault. You chose engineering."
"Ah-har! Let's prove that! Good!"
"So we've proven that! Great. Good. Hehe. Maths again? Well, it is after all the tradition now."
"If you are going to do research on computer vision, you will definitely hear of this guy... And use his snake method and wavelet form... Clever clever guy." (in awe)



VR
Prof Fox

"I can't help you there if your partner is a virtual partner..." Laughs to himself.
-When I told him I am not sure if my partner still wants me in her team for the paper reading.

"Here let me show you. If you sweep in parallel from x-axis, this polo mint will look like it's colliding with this object. But iterate the sweep through all 3 axis and you will realise it was just visual occlusion... Take polo at own risk. Hehe." Pops a mint.

He does all the yar and says idea as "ide" like a typical german guy.

Common mathematical pdf

Ha... I was going scanning for k-means algorithm and stumbled on this guy's site.

Very very nice. He's more into data mining so his algorithms' mostly on clustering and search.

http://www.autonlab.org/tutorials/index.html

Also like his humour:

Primary goal in life: Occasion to use the phrase: "Let me through---I'm a Computer Scientist!"

Monday, March 16, 2009

The best way to understand

... is immersion.


Either by reading or obsessing over it.

Semi-implicit Euler method

The semi-implicit Euler method produces an approximate discrete solution by iterating

v_{n+1} = v_n + g(t_n, x_n) \, \Delta t \quad

x_{n+1} = x_n + f(t_n, v_{n+1}) \, \Delta t \quad

where Δt is the time step and t_n = t_0 + n\,\Delta t is the time after n steps.

The difference with the standard Euler method is that the semi-implicit Euler method uses vn + 1 in the equation for xn + 1, while the Euler method uses vn.

The semi-implicit Euler is a first-order integrator, just as the standard Euler method. This means that it commits a global error of the order of Δt. However, the semi-implicit Euler method is a symplectic integrator, unlike the standard method. As a consequence, the semi-implicit Euler method almost conserves the energy (when the Hamiltonian is time-independent). Often, the energy increases steadily when the standard Euler method is applied, making it far less accurate.


From wikipedia: http://en.wikipedia.org/wiki/Symplectic_Euler_method

3GPP Specifications Numbering

http://www.3gpp.org/specification-numbering

Sunday, March 15, 2009

Friday, March 13, 2009

Sony Vegas wins hands down.

Lovely!

However, I just realised our happy dancing music was quite crap and turns out to be actually creepy. SO I've replace it with:



More on:

http://movie-tv-reviews.blogspot.com/


I love being asian. Look no further than any asian female music and it's all kawaii!!

Sony Vegas vs blender

Now in my impatient attempt to edit my animation short, I want to use something clever but intuitive (overated word these days).

How I wanted to use blender. I mean wow... blender is opensource and includes non-linear editting? I am impressed... But using it is a bitch! I tried following the instructions below... Too complicated for my brain to adhere.

http://eugenia.gnomefiles.org/2008/04/20/video-editing-with-blender/


So gotten a trial of Sony Vegas 7 (unfortunate eh? Since I am still on Windows 2000). Let's see who will win.

Thursday, March 12, 2009

Importing AVI to iMovie

This animation project has given me a thousand and one "a-har" moments, I've stopped being perplexed.

SO how??? Here I am with scene 1 - 5 ready to for audio editing and the idiot just won't add the clips!

Turns out I will need to convert it to an older avi version for iMovie to recognise and import properly... Wokay...

Follow this instructions: http://www.helium.com/items/1255708-how-to-convert-video-for-imovie

Ok, the above doesn't work. And MPG2 video that's muxed will not import into iMovies either. WHaaaaaaaaaaaaat?

http://support.apple.com/kb/HT1372


But I should use expert settings when exporting the movie:

http://forums.macrumors.com/showthread.php?t=302197


I've totally given up on using iMovie now....

Tuesday, March 10, 2009

Creating dust particles?

Oh... dust particles... how you eluded me....

The steps should be:
Create curve.
Particles --> Create emitter.

Then have fun from there onwards... But oh well...

http://forums.creativecow.net/archivethread/2/761053

http://www.highend3d.com/boards/index.php?showtopic=236247

http://forums.cgsociety.org/archive/index.php/t-416001.html

http://www.swinburne.edu.au/design/tutorials/P-maya/T-Maya-Dynamics-Transforming-objects-using-magic-star-dust-particles/ID-119/

This swinburne institution is really something... but the name... aiyo....

Sunday, March 8, 2009

3D text in Maya

We wanted an end credit ala Pixar. 3D words, and our protagonist messing/playing with it.

So we had to import the lettering from either Photoshop or Illustrator. We went with Photoshop as described in the tutorial below:
http://en.9jcg.com/comm_pages/blog_content-art-64.htm

Besides that, we also need to extrude the text. We've used Surfaces: Surfaces--> Loft and Surfaces--> Planar. Then group the each letter together.

However, from the same author, there's another way of doing it:

http://www.youtube.com/watch?v=JJwNOOmkZuU

Saturday, February 28, 2009

Wrestling with Maya

Ha....

What a load of crap... We jumped in without even knowing how to navigate maya... Haiz...

Anyhow... This is an important discovery for the rigging pipeline:

1. Align:
a. Model (textured)
b. Joints
c. Nurbs circle


How to align? Make sure all the 3 above are at point of origin. Check the attributes (Ctrl+A) on the node. I had to realign the joints manually, then translate the model & circle accordingly. But it was not so hard after realising what to do. It's the "How do I do this" that really wasted a lot of my time.

Then:

Modify-->Center Pivot
Modify-->Freeze Transformation


Constraint!!!

Joints + Circle

Constrain-->Orient
Constrain-->Points

Now follow this process to the T!

ALWAYS SET THE IK FIRST BEFORE binding the skin!

Skin --> Bind Skin --> Smooth Bind

This way, the nurbs circle will create a marionette (? wiki check later) for controlling instead of controlling the individual joints.


Then Paint Yer Skin Weights to the joints........... Grr... I did this so many times I want to cry....

Skin-->Edit Smooth Skin-->Paint Skin Weights

There's an "A-har!" here. Always start from the outermost joint, working your way in... And always toggle hold weight.

On painting weights.
Personally, I like to flood with full black bg, then work in the selected joint area.

After that, check the attributes of the joints. Ctrl+A.
Sometimes, this could be turned off. Right Click to see if it's toggled on. X=On.

The most important thing here for natural looking joint bends is the:
Smooth Skin Parameters!!!!

So take care of that here.

Thursday, February 26, 2009

Wednesday, February 25, 2009

Windows- Adding new fonts

In either:

C:/Windows/Fonts

C:/WINNT/Fonts

add your *.tff files here.

Your fonts will be automatically installed.


Oh well... I am so forgetful I need this.

More on this here: http://graphicssoft.about.com/od/photoshop/qt/photoshopfonts.htm

Thursday, February 19, 2009

Friday, February 6, 2009

Thursday, February 5, 2009

Inverse Kinematics -- help for assignment

http://www.darwin3d.com/gdm1998.htm

http://answers.google.com/answers/threadview?id=43974

http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/index.html

http://www.devmaster.net/forums/showthread.php?t=7211

http://www.codeguru.com/forum/showthread.php?t=299690

http://www.cours.polymtl.ca/roboop/docs/html/classmRobot.html

http://www.gamedev.net/community/forums/topic.asp?topic_id=516688

Readings!!!!

http://csci520.googlepages.com/



uuuuu useful tools: http://www.sharewareconnection.com/titles/inverse-kinematics.htm

Phoneme shapes to animate speaking characters

Extended Preston Blair phoneme series

It always amazes me how few phoneme shapes you really need to give the impression of a talking character. This article covers a slightly extended range of phoneme mouth shapes, based originally on the Preston Blair series. This extended set adds a few extra mouth poses useful for sequencing mouth movement to dialogue tracks. The main additions to the Preston Blair series is a specific phoneme shape just for Th (as in thanks or thrash) and an additional phoneme shape for the C, D, G, K, N, R, S, Y and Z sounds, which is similar to E but provides an extra target pose when you have a run of sounds that are similar in mouth shape (but need some slight variation for contrast). I find these occur frequently enough to deserve their own poses.

Getting started

Each phoneme shape shown here is accompanied by example word sounds, these are by no means golden rules always be followed - but are there as examples of the kind of sounds the mouth shape represents. If it looks correct, then it is correct and the best trick to getting lip synch looking correct is have an easy way to repeatedly preview your sequence along with your soundtrack so you can go back over the sequence again and again fine tuning poses. Some lip-synch tools (as included with Hash Inc. Animation:Master) provide quick and productive ways of generating your dopesheet timing, other video sequencing programs can also be used to calculate your pose timings but require a more manual process (such as Adobe Premiere).

Phoneme A I

Example sounds are: apple, day, hat, happy, rat, act, plait, dive, aisle.

Phoneme A I

Phoneme E

Example sounds are: egg, free, peach, dream, tree.

Phoneme E

Phoneme O

Example sounds are: honk, hot, off, odd, fetlock, exotic, goat.

Phoneme O

Phoneme U

Example sounds are: fund, universe, you runner, jump, fudge, treasure.

Phoneme U

Phoneme C D G K N R S Y Z

Example sounds are: sit, expend, act, pig, sacked, bang, key, band, buzz, dig, sing.

Phoneme C D G K N R S Y Z

Phoneme C D G J K N R S Y Z

Example sounds are: grouch, rod, zoo, kill, car, sheep, pun, dug, jaw, void, roach, lodge.

Phoneme C D G J K N R S Y Z

Phoneme F V

Example sounds are: forest, daft, life, fear, very, endeavour.

Phoneme F V

Phoneme Th

Example sounds are: the, that, then, they, this, brother.

Phoneme Th

Phoneme L

Example sounds are: election, alone, elicit, elm, leg, pull.

Phoneme L

Phoneme M B P

For many M, B and P sounds, it's important that the phoneme shape should be reached before the M, B or the P sound is made, the sound is often only made as the pose breaks. Example words are: embark, bear, best, put, plan, imagine, mad, mine.

Phoneme M B P

Phoneme W Q

Example sounds are: cower, quick, wish, skewer, how.

Phoneme W Q

The rest shape

The rest shape is not a phoneme as such but a shape used during pauses between words and sentences.

Rest Pose

Get the tweening right

In addition to placing the correct phoneme shape next to dialogue sound, keep in mind how your software tweens from phoneme pose to pose, the default settings are rarely good enough. When you need a clear definition of a particular mouth shape you'll need to space matching or similar mouth poses at the start and end of the hold. A common example is during the rest point between spoken sounds, where mouth movement often pauses. Don't forget you'll need to go deeper in and adjust the timing curves of your phoneme sequence to get the ease in and out of mouth motion looking natural. Rendering after each animation pass - playing the sequence against the audio track is really the best way of catching problem areas and refining your work. My final comment is try not to over cook your phoneme keys (don't have too many). Pick the important sounds and hit their shape clearly to emphasize the dialogue flow. Best of luck!

Related links


Extended Preston Blair phoneme series

It always amazes me how few phoneme shapes you really need to give the impression of a talking character. This article covers a slightly extended range of phoneme mouth shapes, based originally on the Preston Blair series. This extended set adds a few extra mouth poses useful for sequencing mouth movement to dialogue tracks. The main additions to the Preston Blair series is a specific phoneme shape just for Th (as in thanks or thrash) and an additional phoneme shape for the C, D, G, K, N, R, S, Y and Z sounds, which is similar to E but provides an extra target pose when you have a run of sounds that are similar in mouth shape (but need some slight variation for contrast). I find these occur frequently enough to deserve their own poses.

Getting started

Each phoneme shape shown here is accompanied by example word sounds, these are by no means golden rules always be followed - but are there as examples of the kind of sounds the mouth shape represents. If it looks correct, then it is correct and the best trick to getting lip synch looking correct is have an easy way to repeatedly preview your sequence along with your soundtrack so you can go back over the sequence again and again fine tuning poses. Some lip-synch tools (as included with Hash Inc. Animation:Master) provide quick and productive ways of generating your dopesheet timing, other video sequencing programs can also be used to calculate your pose timings but require a more manual process (such as Adobe Premiere).

Phoneme A I

Example sounds are: apple, day, hat, happy, rat, act, plait, dive, aisle.

Phoneme A I

Phoneme E

Example sounds are: egg, free, peach, dream, tree.

Phoneme E

Phoneme O

Example sounds are: honk, hot, off, odd, fetlock, exotic, goat.

Phoneme O

Phoneme U

Example sounds are: fund, universe, you runner, jump, fudge, treasure.

Phoneme U

Phoneme C D G K N R S Y Z

Example sounds are: sit, expend, act, pig, sacked, bang, key, band, buzz, dig, sing.

Phoneme C D G K N R S Y Z

Phoneme C D G J K N R S Y Z

Example sounds are: grouch, rod, zoo, kill, car, sheep, pun, dug, jaw, void, roach, lodge.

Phoneme C D G J K N R S Y Z

Phoneme F V

Example sounds are: forest, daft, life, fear, very, endeavour.

Phoneme F V

Phoneme Th

Example sounds are: the, that, then, they, this, brother.

Phoneme Th

Phoneme L

Example sounds are: election, alone, elicit, elm, leg, pull.

Phoneme L

Phoneme M B P

For many M, B and P sounds, it's important that the phoneme shape should be reached before the M, B or the P sound is made, the sound is often only made as the pose breaks. Example words are: embark, bear, best, put, plan, imagine, mad, mine.

Phoneme M B P

Phoneme W Q

Example sounds are: cower, quick, wish, skewer, how.

Phoneme W Q

The rest shape

The rest shape is not a phoneme as such but a shape used during pauses between words and sentences.

Rest Pose

Get the tweening right

In addition to placing the correct phoneme shape next to dialogue sound, keep in mind how your software tweens from phoneme pose to pose, the default settings are rarely good enough. When you need a clear definition of a particular mouth shape you'll need to space matching or similar mouth poses at the start and end of the hold. A common example is during the rest point between spoken sounds, where mouth movement often pauses. Don't forget you'll need to go deeper in and adjust the timing curves of your phoneme sequence to get the ease in and out of mouth motion looking natural. Rendering after each animation pass - playing the sequence against the audio track is really the best way of catching problem areas and refining your work. My final comment is try not to over cook your phoneme keys (don't have too many). Pick the important sounds and hit their shape clearly to emphasize the dialogue flow. Best of luck!

Related links

Taken from: http://www.garycmartin.com/phoneme_examples.html