Thursday, February 23, 2012

Barbarian Skill Trainer, the Second

Only about three hours (perhaps less) of work over my last posting of this illustration. It's still kind of rough and sketchy in places, but that's how I feel like leaving it for the moment. Just for posterity's sake - this is one of the skill trainers for my senior project game. He exists only as an illustration in our menu UI... but the character design's kind of neat, I think. Maybe one day I'll make a 3D model out of him? Probably not. Onwards, to the paladin!

Wednesday, February 22, 2012

Barbarian Skill Trainer

Since I finished my Korean Girl/Woman portrait, I decided to devote my artsy evenings to senior project - not to say that I would be coding all night, though. I do have two character portraits to complete for our user interface. Initially this was six, but as we cut down the number of trainers we'd include in our game, so fell the number of portraits I had to produce.

So this one's still pretty rough, but I don't like it that much. I never really felt into it, but I pushed along anyways. I hate touching his face, because it never seems to come out right. And yeah, he's only got one arm. He lost it as a child, before he ever picked up an axe. He's that badass. They call him two-hands, because he always chooses to use the biggest two handed weapon available.

Sunday, February 19, 2012

Replication of Variables in UDK

I will try to make this as brief as possible. If you're interested in something with a little more depth, I strongly recommend you read through Replicating a Flashlight's State; it isn't very long either, and probably makes my post obsolete, but I felt like presenting my understanding on the matter.

Networking in UDK

Alright, here goes. My first somewhat educational post, and I declare that it shall be on the illusive topic of networking. This will primarily cover the basic issues of creating a server, connecting to that server and also creating a combination between a client and a server. But first, an introduction to the concept of a client and a server.

Tuesday, February 14, 2012

Cain and Abel, the Third

Growing tired of this piece, and a drop of colour hasn't yet touched the canvas. This does not bode well! It may, however, just have something to do with the fact that I've been painting largely while being drowsy (it's 4am, so don't hold it against me). Been spending the majority of the past few days working hard. Today's endeavour was finishing off a website that will soon join my portfolio. In other news, I finally got around to watching Joseph (1995) today - remarkably good movie. First half was slow, but it really picked up towards the end. Though the climax was a little drawn out, leaving the viewer to wonder when the damn thing was finally going to peak properly. Still, good movie. Of course, I do like my biblical epics.

Monday, February 13, 2012

Cain and Abel, the Second

Tried looking for reference, especially for the figures of Adam and Eve embracing each other, but I couldn't find anything that would really even remotely suit the pose. So, I will have to wing it, I guess. Oh well. I'll try and give myself plenty of chances to re-evaluate my direction before I take this to colour (I'm still well away from that stage), so I hope I can work out some of the more glaring issues.

In other news, I managed to finish the annotated bibliography that's due on Tuesday for art history. We've been given a good twenty-three paintings (all, or most on display at the National Art Gallery) to choose from for our essay. I quickly narrowed it down to three; a Giordano, a Rembrandt or a West. Unfortunately, I could find next to nothing in terms of articles on the first two... Although in retrospect I don't remember looking particularly hard for the Rembrandt ("The Tribute Money"). I think I forgot about it, while fussing over the Giordano. It's too bad, because it really is a lovely painting. But anyways, I found a fair bit about the Benjamin West painting, and despite initially not being particularly taken by it, reading the articles really increased my interest in the piece. I think by nature I'm more drawn to pieces of classical nature and subject, but it is very much the fact that West pulls away from that standard that makes "The Death of General Wolfe" so alluring in its own right. Also helps that I remember doing a project back in junior high about the Battle of the Plains of Abraham, so I'm familiar with some context.

Considering, though, that the painting itself can be interpreted in so many different ways, and holds so many layers of meaning and significance, I shouldn't have too much trouble writing an essay on the topic. I hope.

Sunday, February 12, 2012

Cain and Abel, the First

So, as I mentioned in my last post, since 2008, I've felt compelled to work on pieces that express my take on the character of Lucifer. This started off with a few paintings of him suffering after being cast out of heaven. Last time, I moved more towards his supposed role in the original sin. I expressly made the decision not to worry very much about the distinction between the various devil figures (Lucifer, Satan, Samael, Azazel, etc), but am instead following the story with Lucifer playing a very pitiable and human role. The role of an arrogant son, cast out by an all-too heavy handed father. The role of a distraught, directionless being finding some level of peace in helping a man and woman attain the knowledge they seek. Now the role of a father, unable to properly care for his son as a man might, but doing what he can all the same.

I find that being able to look at these stories from a mythological stand-point allows me to appreciate them quite deeply. Without concerning myself with matters of truth, I'm able to consider various dynamics between characters, and explore various archetypes that can be applied to each figure. Not that these ideas are anything original... I was pretty pleased with my idea of Lucifer as a human figure to be empathized with, back when I painted the first piece - more recently I've discovered that this idea became pretty popular in the past couple of centuries. Gat dangit!

Saturday, February 11, 2012

Trees are Jerks

Seriously. They're too tall, you can't trust them. Fun to paint the limbs, but the leaves are unspeakably bothersome. Felt like reattempting the environment of a painting I did a couple years ago, as a speed paint. It was supposed to be the tree of knowledge, hanging over a pit of lava. I haven't really looked at the old painting yet for comparison's sake - I hope it's at least a bit of an improvement.


On that note, I'm considering moving onto the next entry (number four) of the biblical series I've been doing since I started college. I generally did one a year, and I did start on one last year, but grew disenchanted with it before I was able to finish. Not completely sure if I'll pick up where I left off, but I've been reading wikipedia articles on biblical myth again lately. Samael and Lilith are definitely quite inspiring.

Thursday, February 9, 2012

I'm getting tired of painting latex now...

So maybe tomorrow night I'll try something else. Perhaps something less like a big shiny ass. Ugh, I can't wait until tomorrow night, though. I finished most of the stressful bits of this week (essay proposal due tomorrow, but I handed it in already - although technically I was granted a five day extension, putting the due date to Tuesday). Still have to give a presentation tomorrow, but the slides and whatnot are all prepared. That is all.

Oh wait! One more thing. I finally decided to buy my art history course's textbook today. $185! Over two hundred at the campus book store, thankfully amazon had it for a bit cheaper. But still - before this, the most expensive textbook I'd purchased was around $100. Had better be worth it. Definitely couldn't put it off any longer though, since I've got a midterm on the subject at the end of this month.

Wednesday, February 8, 2012

Painful SQL, More Shiny Latex and Uneducated Drivel

Painful SQL

So today I was working on one of the contracts I've currently got going - the task itself is not large, but it has a few somewhat challenging components. I (kind of) conquered one of them today. An immensely complicated SQL query that involves sorting the returned rows by how the relative ratios of protein, carbohydrates and fats in each item retrieved differ from a user's goal. Furthermore, it has to take into consideration that it is less desirable for the bulk of the difference to be in one category instead of spread out across all three. Somehow, with a combination of standard deviation equations and some handy experimentation on my part, I managed to come up with a solution - hooray for first year statistics class! Still, thanks to the fact that you can't use aliases for much within the query itself (can't multiply two aliases together, etc) I ended up with an absolutely HIDEOUS query. Surprisingly enough, I had very few syntactical issues, and none of them came from the part to do with value on which the results were sorted. Enjoy:

SELECT it.items as name, it.grams as grams, it.portion as portion,  it.calories as calories, it.grams_p as protein, it.grams_c as carbs,  it.grams_f as fat, it.grams_sat_f as saturated, (SQRT(((((14 -  (it.grams_p*4/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f * 9))))  - (((14 - (it.grams_p*4/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))) + (56 - (it.grams_c*4/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))) + (30 -  (it.grams_f*9/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f *  9)))))/3)) * ((14 - (it.grams_p*4/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))) - (((14 - (it.grams_p*4/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))) + (56 -  (it.grams_c*4/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f * 9))))  + (30 - (it.grams_f*9/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))))/3))) + (((56 - (it.grams_c*4/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))) - (((14 -  (it.grams_p*4/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f * 9)))) + (56 - (it.grams_c*4/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))) + (30 -  (it.grams_f*9/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f *  9)))))/3)) * ((56 - (it.grams_c*4/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))) - (((14 - (it.grams_p*4/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))) + (56 -  (it.grams_c*4/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f * 9))))  + (30 - (it.grams_f*9/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))))/3))) + (((30 - (it.grams_f*9/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))) - (((14 -  (it.grams_p*4/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f * 9))))  + (56 - (it.grams_c*4/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))) + (30 - (it.grams_f*9/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))))/3)) * ((30 - (it.grams_f*9/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))) - (((14 -  (it.grams_p*4/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f * 9))))  + (56 - (it.grams_c*4/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))) + (30 - (it.grams_f*9/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))))/3))))/2) * ((14 -  (it.grams_p*4/((it.grams_p * 4) + (it.grams_c * 4) + (it.grams_f * 9))))  + (56 - (it.grams_c*4/((it.grams_p * 4) + (it.grams_c * 4) +  (it.grams_f * 9)))) + (30 - (it.grams_f*9/((it.grams_p * 4) +  (it.grams_c * 4) + (it.grams_f * 9)))))) AS sortorder FROM items it LEFT  JOIN intake int_f ON (it.id_foods=int_f.id_foods and int_f.Date >=  DATE_SUB(CURDATE(),INTERVAL 4 DAY) and int_f.user_id='1') LEFT JOIN  intake int_fg ON (it.id_groups=int_fg.id_groups and int_fg.Date >=  DATE_SUB(CURDATE(),INTERVAL 2 DAY) and int_fg.user_id='1') WHERE  int_f.id_intake IS NULL and int_fg.id_intake IS NULL and ((IF(it.meal_id=0,it.meal_id,(SELECT SUM(sint_f.id_intake) + SUM(sint_fg.id_intake) FROM meal_ingredients ming LEFT JOIN items mit ON (ming.item_id = mit.id_items) LEFT JOIN intake sint_f ON (mit.id_foods=sint_f.id_foods and sint_f.Date >= DATE_SUB(CURDATE(),INTERVAL 4 DAY) and sint_f.user_id='$user') LEFT JOIN intake sint_fg ON (mit.id_groups=sint_fg.id_groups and sint_fg.Date >= DATE_SUB(CURDATE(),INTERVAL 2 DAY) and sint_fg.user_id='$user') WHERE ming.meal_id=it.meal_id))) IS NULL or it.meal_id='0') ORDER BY sortorder ASC LIMIT 15

More Shiny Latex

On another note, I did another latex study. It's nice, you know, to have a blog that no one reads - means I don't have to be self conscious for using latex fetish models for studies. Today's was Susan Wayland. Still needs work, and I threw the face and hair on there rather quickly because I was getting tired. Not that I should be making excuses.

Uneducated Drivel

Oh! Today's Art History lecture was very interesting, once again. It pains me that I've missed two classes already thanks to the weather (I haven't been keen on driving through snowstorms for an evening elective). It's not common for me to regret missing a class or two. Today we covered various interpretations of Baroque art; Spanish, Flemish and Dutch. A lot of beautiful pieces, although I didn't find myself particularly fond of the all-too everyday paintings of Vermeer. I mean, I know they hold deeper meaning in raising the average person to a piece of interest, but it just doesn't do much for me. Even some of the still lifes from the same period and region seemed more intriguing to me. Then again, it may have been the particular pieces our professor showed us - I do remember finding The Girl with the Pearl Earring somewhat interesting.

But oh jeez. Las Meninas, by Velázquez? I have no words. The amount of depth in the painting, and how the mere presence of a canvas blocking off the far left brings the viewer into the piece is astonishing. By adding that border element, it seems to knock away all other edges and immerse you into the scene. I did appreciate that same sort of element of Vermeer's The Art of Painting, but I think its disregard of the viewer, counters that connection and allows me to detach all too easily.

... But seriously. How does Vermeer know what his own back looks like?

Tuesday, February 7, 2012

Latex is Challenging

Felt like attacking something shiny, and a latex-clad Bianca Beauchamp Catwoman was my first choice. Really.. did not go particularly well. Definitely need more practice with shiny objects.

Monday, February 6, 2012

Savage Arena Thumbnails

Just a short post tonight. Spartacus: Vengeance has started up, and I watched the second episode this evening. The scenes with Oenomaus (had I not googled the name, I would have butchered the spelling horribly) were particularly striking to me - specifically with the naked people shackled and hanging from beams in the background. Got me in the mood to draw a similar arena, makeshift and filthy, with prisoners chained up and vulnerable right in the fighting area. A sentence of sorts - if you manage to serve your term without getting killed by an errant swing or a poorly aimed strike, you go free. Thumbnails are below.

Sunday, February 5, 2012

Saints Row the Third, the Fifth and Last

It's been a hell of a week, and it's only going to get quite a bit worse. A whole slew of assignments and a presentation due late this week and next week, a couple web development contracts that I need to get on top of (one of which I've been trucking through at a remarkable pace), and a functional demonstration of every aspect we intend to include in our senior project game due in less than two weeks. I think I'd be fine, were it not for the pesky annotated bibliographies, essay abstracts and presentations, even though they're likely the least involved of everything on my plate.

Back on Thursday, I managed to rebuild all of the flash components of my Senior Project's user interface (moving from AS3 to AS2), which ultimately allowed me to overcome my crashing issues. So that was good. Also been spending much of the weekend away from UDK, opting to spend my days building a portfolio website for a client. Khuyen had been handling all of the design aspect for a good while, and finished her part earlier this week - so now it's all on me to build it up. Between Friday and today, I built the layout in HTML/CSS and added a fair bit of the Javascript (jQuery) functionality. All that's left is incorporating jPlayer for music and video (client's a musician/composer), and integrating a custom CMS.

While my days were spent coding, my evenings were mostly spent painting. I've been pretty tired of this Saints Row character portrait for a good while, but I couldn't just let it go, so I finished it up. Much of the time was spent being frustrated about the over-saturated colours and poorly scribbled backdrop, but I've done what I could. It's done now, and I'm not wholly disappointed with it. I'm kind of eager to go back to doing some quick doodles though. Hopefully I'll be able to get out from under the articles I have to read for class and the web development I have to finish up to screw around in Photoshop tomorrow night. Hopefully.

Thursday, February 2, 2012

UDK, TextureRenderTarget2D, SetExternalTexture() and Scaleform 4

May 18th, 2012 Edit: It appears that the May 2012 release of UDK fixes this issue (reference). Thanks to Steven Webster for letting me know!

Punch UDK in its stupid face!

Perhaps I'm not being clear enough. So a couple weeks ago, I decided to build the user interface for my Senior Project (a UDK based game) using Scaleform 4, a recent addition to Unreal. Up until the November 2011 release, UDK only supported Scaleform 3, which in turn only allowed developers to use ActionScript 2.0 when creating interfaces in Flash. The last time I touched ActionScript 2.0 was when I was in the eleventh grade. I think I made a pong game. So obviously, I was pleased to hear that I could use AS3, which I had learned to a reasonable extent only a few years ago.

Bad move.

Since then, I've been running into issue after issue, and it was really my own fault. I shouldn't have expected such fresh features to be well supported. A lot of major elements are quite broken. For the most part, there have been solid workarounds, but now I've run into something that I cannot avoid.

I've been trying to incorporate a preview window for 3D components for things like the inventory screen, where clicking on an item would load up a rotating view of the object. I found out how to do this, in theory - it involves taking what is essentially a camera (SceneCapture2DActor) and having it render directly to a texture (TextureRenderTarget2D). Then, SetExternalTexture() is used to replace an image texture in the Scaleform UI at runtime. Effectively, you are given a sneak-peak at something rendered from off screen. The technique relies heavily on the notion of dynamic textures, which can be used to create computer screens, water reflections, etc. (Check out these links for more information on Rendering to Texture and Swapping Render Targets into Scaleform UIs).

Unfortunately, where the plan fell through was at the very end - SetExternalTexture(), unfortunately, causes the whole program to crash when used with a TextureRenderTarget2D. I found some complaints about this on the Epic forums, but unfortunately it doesn't seem to be high on the list of priorities. People have been complaining about it since early December at least, and to my dismay, the January 2012 release (which came out today, or very recently) has the same problem.

So, I've decided to bite the bullet and revert to the October 2011 release of UDK, and switch out in favour of AS2. I'm really frustrated, but since I'm more familiar now with a lot of the processes and issues, I should hopefully be able to redo the work I did in the past couple of weeks in much less time. Unfortunately, I have a meeting with my Senior Project advisor on Friday, and I will definitely be falling short of my biweekly goals. Gat dangit.

Wednesday, February 1, 2012

Saints Row the Third, the Fourth

That title scheme is starting to get stale, but I figure that now that I've come this far, there would be little sense in breaking the chain! Just a little progress on the Saints Row character portrait. I spent most of the time (which was only an hour or two) nonchalantly painting an arm and the chest area, quickly losing interest and motivation. In the last fifteen to twenty minutes, I did what I should have done much earlier - lay down the general tone of the scene. In a way, delaying it was to my benefit, as it allowed me to reanalyze the points of focus and subdue anything that was largely unimportant. We'll see if I take this to completion, though, I'm starting to get bored of it. Having beaten Saints Row 3 on Saturday, I think my primary source of motivation is gone.