Unity 3D Mecanim & AI Tutorial This Week (or Next)

Over the past few weeks, I've received several private messages from Youtube users that stumbled across my Unity 3D Character Controller & Animation (Legacy) tutorial - either for help with regards to that tutorial or asking why I have not posted new tutorials. For awhile I've felt that Youtube was spoiled by a wealth of tutorials with regards to Unity 3D. So, I did not see a point in tossing my name into the hat.  Due to these messages, I've changed my mind. I will put out more tutorials (Unity 3D, Maya, After Effects, etc) from this point forward and see if I can be of help to others.

The first tutorial that I am working on will cover retargeting an animation utilizing Mecanim on a character model with no animations. The second tutorial will cover using the Rain AI  from Rival Theory on these newly animated characters in an attempt to set up characters that are doing security/surveillance on a small lake compound. Below is the compound (still in progress). I will update this post as I get closer in completing the tutorials.  

Giving Modo 701 a Go

As far as 3D Modeling, Animation, & Rendering Software goes - Maya and Cinema 4D have been my tools of choice; but, recently, I've discovered Modo. I like. I think that I'm in love with Modo's bevel tool. The workflow and shortcut keys take a  bit of time to get used to if you are more acclimated to Maya or C4D controls. I still have a ways to go, but I like what I see. 

Above, is a water bottle that I modeled off a reference shot on an image plane.

Custom Shaders in Unity 3D

In addition to AI, one aspect of Unity 3D that I'm trying to master is custom shader creation. Here are some examples of my first shaders. In my examples, I created a simple shader (w/o properties). In the photos which that shader is applied, the warrior model appears in all white. 

On top of the simple shader, I created a Texture/Bump Map shader, a Specular Shader (applied to armor), an Emission Shader (applied to the sword radiating a molten glow), and an Alpha Shader (applied to the Warrior's hair & fur trim).  You can find the code to all of the shaders in my github

I still have a ways to go mastering shaders, but I have a good beginning. I will probably need a lot of time to pore over Unity's Shader Reference documentation.

Later on, I would like to create some Toon Shaders. So, that will come in time. 

 


Fun with Poly-modeling and Image Planes in Maya

Of late, I've been practicing low-poly-modeling with Maya. In the past, I've worked with Cinema 4D for my modeling projects, but I want to round out my 3D Modeling skills with Maya in addition to Modo.  

Here I wanted to get some practice utilizing image planes in Maya as references. So far, I love the workflow. I usually model from the top of my head or work off hand-drawn sketches, but I appreciate the time reference shots save when you are short on time. 


There and back again

This site is a new beginning. My older site, kojoopuni.com, still remains. In the next few weeks, I will be migrating content from that site to this one. Eventually,  this site will also be named kojoopuni.com. I'm in the middle of projects, so new material will arise here and there.

KO

 

Data Representation Final | Leaving New York City

// Before reading further, let me warn you in saying that the first part of this blog post will discuss the failure of my initial project idea and the second portion will focus on my eventual final project.

// Part One

For a time, I could not pinpoint what exactly I wished to focus on for my final project. Initially, I wanted to explore visualizing data in a 3-dimensional space. Before beginning my project, I had the constraint of not being able to utilize Processing (long story), so I had to resort to other means for my final project.

So,  I decided to visualize a section of NYC in Houdini – a 3D software application. As far as what meaning I would represent in this environment, I did not have a clue; I just knew that I wanted to have a go at it and see what would develop.  So, I took a 2D cross-section of Lower Manhattan & Brooklyn from openstreetmaps.org. From this cross-section, I was able to extract a XML file which contained location data of the buildings, roads, parks, etc.  I successfully parsed the XML data (as far as a 2D representation)  utilizing python scripting within  Houdini. When it came to script a 3D model of my map, my render exhibited unexplained behavior. Visually, the render was compelling but it was not an accurate representation of that cross-section of NYC. Obviously, I could not expect an exact 3d representation of my NYC cross-section since the map provided by Open Street Maps does not contain every building in NYC merely an approximation. I  needed a ‘true’ 3D representation of NYC as a base before altering it with various data sets such as the water levels in NYC before and after Hurricane Sandy hit.  I will most likely hammer out the kinks in the scripting over the holidays.

Here is a bit of video documentation of my progress (read: failure).

//Part Two

I hit a wall. I had a visually compelling 3d render of a section of NYC, but why should you care about it?  What were the reasons for the irregularities? What story was I attempting to tell in this model? With a week to go till final presentations, I did the unthinkable. I shelved this project till a later time for further exploration, and I decided to start again and return to zero.

I decided to return to the question of what truly resonated with me. Throughout the semester, I was drawn to projects that utilized text such as the Public’s Theater’s Shakespeare Machine.  So, I wanted to explore text as data. I also wanted the text to carry a personal element – something that would resonate with me first and possibly others (hopefully). In a flash of intuition, I began to think about my entire experience in New York.  I’ve been living in New York City for the past 7 years, and the one lingering question I have  is whether or not to re-sign my lease to this NYC experience or try my luck in a more affordable city with possibly less stress once I graduate. As The Clash would say, should I stay or should I go?  The more I thought about my own quandary; the more I wondered about the experiences of others.   Why do people come to New York City? Why do they leave? In the past few years, do more people move to NYC as opposed to those that leave? With all of these questions, I had a direction to explore.

In my research, I stumbled across this compelling article:

Manhattan Lures the Newest New Yorkers

Even though I found all of this data interesting, I wanted something that went beyond the numbers and the usual reasons for leaving/moving to New York – school, career, love, etc. So, how would I go about it? Why do people move/leave New York City beyond the expected?  I wanted to explore text not only as data but as a document of an individual/collective experience.

What is the data?

Initially, I decided to use Twitter data. A move to or a departure from NYC is a major event in one’s life, so I felt that a person would most likely document such a momentous event on Twitter (and hopefully the reasons for doing so in that respective Tweet). I made a list of hashtags or phrases one would make if they were moving to NYC such as the following.

#movingtoNYC, ‘moving to NYC’, ‘Moving to New York City’, #leavingNYC, etc.

I then used a python script to initiate search queries of Twitter. Here is the general structure of the script below:

import json
import urllib
import time

def search_twitter(query):
resp = urllib.urlopen('http://search.twitter.com/search.json?' + urllib.urlencode(query))
data = json.loads(resp.read())
tweets = list()
for item in data['results']:
tweets.append(item)
return tweets


if __name__ == '__main__':

import sys
query = {'q': sys.argv[1], 'rpp': 100}



for tweet in search_twitter(query):
print tweet['text'].encode('ascii', 'replace')

I wanted to collect all of the tweets of people moving to NYC in one corpus and those leaving NYC in another corpus.

Though the idea seemed promising, I ran into several hurdles with this approach.

The data received contained elements of my various search queries but nothing more. Many times a Twitter user would only tweet – ‘Moving to New York City’ . I wanted something a little deeper.

Also, it’s very difficult to encapsulate an experience in so many characters or less, so it was hard to find tweets that went beyond the superficial.

I also ran the problem of finding a distinction between tweets from actual NYC residents (current, soon to be, soon to leave) and that of tourists. I would say that the bulk of the tweets I found were from tourists.  By my best estimations, a tourist visits/leaves NYC being enamored with the experience. Yet, the tourist experience differs greatly with one who lives here, who has to make a life here, who has to work here, etc. I wanted to get that experience from the text – not the experience via a rose-colored P.O.V.   I made a judgement call not to include ‘tourist’ tweets in the data set though many were interesting and entertaining in their own right. So, I manually parsed through all the text and made a quick determination as to whether or not the text originated from an actual resident or a visitor. I was more interested to find reasons why someone would move to  and/or leave nyc.  Though I was able to find a decent amount of tweets to place in my ‘comingto’ and ‘leavingfrom’ corpuses, I was not happy with the quantity and quality of the data/tweets.

So, I hit another wall.

In my many attempts to climb and circumvent this ‘wall’, I came up with the following idea – incorporate Flickr data in addition to the Twitter data for each corpus.  Many people I know like to document both their ordinary and extraordinary experiences via photos.  Prior to moving to NYC in 2005, I took a wealth of photos to document my move from Houston to NYC out of sentimentality. If I do plan on leaving NYC next year, I may find myself going through the same process – documenting the landmarks and experiences I’ve accumulated here using photos as the medium.  Also, many times we take photos in order to share to a larger audience. My thoughts immediately went to Flickr. So, I performed the same queries that I used in Twitter in Flickr, and I received results such as the following:

Screen-Shot-2012-12-19-at-7.12.03-AM.png

If you read the title and subtext of each photo, this was the type of information that I was seeking. As I surveyed all the results of my queries, I came to the following conclusion.  Moving to NYC is like the beginning of an exciting new relationship – a relationship so exciting that the mere anticipation of it can be overwhelming. After having the experience of NYC, one develops stronger emotions for NYC (either in the positive or the negative) or even slight resignation. For people leaving NYC, I found the text mirror that of a bad breakup. Something went wrong along the way, and someone had to make a break for it for better or worse. That’s the type of vibe I gathered from the Flickr text.  So, I combined the Flickr and  the Twitter text in each respective corpus.

I decided to also pipe the text of each corpus into various python scripts. One script would randomize the lines of each corpus. Another python script would pipe the corpus through a Markov chain, etc.  Here is a sampling of some of the python scripts used below:

1) Markov Script

import sys
import markov

generator = markov.MarkovGenerator(n=3, max=500)
for line in sys.stdin:
line = line.strip()
generator.feed(line)

for i in range(5):
print generator.generate()

# Functions

def feed(self, text):

tokens = self.tokenize(text)

# discard this line if it's too short
if len(tokens) < self.n:
return

# store the first ngram of this line
beginning = tuple(tokens[:self.n])
self.beginnings.append(beginning)

for i in range(len(tokens) - self.n):

gram = tuple(tokens[i:i+self.n])
next = tokens[i+self.n] # get the element after the gram

# if we've already seen this ngram, append; otherwise, set the
# value for this key as a new list
if gram in self.ngrams:
self.ngrams[gram].append(next)
else:
self.ngrams[gram] = [next]

2) Adjective Extractor Script

import sys

adj_set = set()
for line in open('adjectives'):
line = line.strip()
adj_set.add(line)

for line in sys.stdin:
line = line.strip()
adjs = [s for s in line.split(" ") if s.lower() in adj_set]
if len(adjs) > 0:
print ', '.join(adjs)

3) Randomize Lines

import sys
import random

all_lines = list()

for line in sys.stdin:
line = line.strip()
all_lines.append(line)

random.shuffle(all_lines)

for line in all_lines:
print line

4) Randomize Words

import sys
import random

for line in sys.stdin:
line = line.strip()
words = line.split(" ")
random.shuffle(words)
output = " ".join(words)
print output

So, I piped each corpus – ‘Come.txt’ & ‘Go.txt’ – through various python scripts in different combinations until I attained an output that was telling, poetic, and did not veer into nonsensical territory (hopefully).  Here is an example of how I would pipe the corpus through various python scripts in Terminal:

And, here is an example of some of the output I  received (click to enlarge):

Now, I had a collection of texts/poems representing the experience of moving to and leaving nyc. So, how would I represent this data?

2) What is the medium? 

I decided to create a physical object , specifically, an airline boarding pass. I could have chosen to present the poems simply on a screen, but there is something decisive and final when you hold an actual ticket in hand.  It’s a commitment to the experience and what it may or may not bring. I created two types of airline boarding passes – one going to and one leaving NYC.  For a boarding pass leaving NYC, I would place a short poem originating from the ‘go.txt’ corpus in the middle of the ticket. Here are some examples:

Here are some examples of  boarding passes coming to NYC with text originating from the ‘come.txt’ corpus.

For the final presentation in class, I printed 16 boarding passes (8 leaving, 8 coming). At the bottom of each ticket,  I included NYC migration data and incorporated it with the bar code you would usually find in a typical boarding pass. I derived the data from the US  Census American Community Survey.  From this data, you will notice that more people left rather than moved to NYC in 2008-2010. The trend began to change the other way around in 2011. I would have  loved to incorporate the 2012 data, but it was not available (or I did not know where to look).

3) What is the question? 

I feel that the question and answer changes for each viewer of each boarding pass.   If the viewers are New Yorkers, the words may resonate with their own experience and remind them why they came, why they stay, or why they wish to leave New York City. For the viewers that are not New Yorkers, the words of the boarding pass may either entice them into living in NYC or dissuade them. I’m not sure. The boarding pass presents the question, but only the viewer will be able to answer the question(s) it presents . There may be a clear answer in the reasons why one comes to or leaves NYC.   NYC is the one city that many dream about as well as never forget once one leaves the city indefinitely.

All and all, I just feel that I’ve scratched the surface. Given more time, I feel that something more compelling could arise from this beginning. If I could find a dataset outside of twitter with a wealth of information, that would be great. Twitter is a great medium for data, but not everyone uses it. I may have a twitter account, but I rarely tweet. I have many friends and family that do not see the need to have a twitter account. Also, it only allows so much information to be parsed from it. I do know that Twitter is allowing its users to to receive all of their tweets they ever tweeted (is that a word?) in an archive. So, I’ll see what happens next with this project.

KO

ITP Thesis | Adelphi - The Myth of Selym & Myles

// July 2013 Update

At the moment, I’m in the process of rendering the scenes from Adelphi. Considering that I’m not blessed with a render farm & the graphics card in my macbook recently burned out, it may take some time.  Below are some screenshots of Adelphi built in Cinema 4D & composited in After Effects:

// End of Update

 

/*It’s been awhile since I’ve last written in my blog.  At the moment, I working on my ITP Thesis which is a series of 3D Animations. I will write more about the inspiration for it when I have more time to play in this space. I’m also brushing up on my Unity 3D, Cinema 4D, Maya, Java, C++, Objective-C, and Javascript skills when I have a moment. As far as this blog, a revamp is long overdue, and I promise to update it more with my little side projects.  So, without further ado, below is a progress report for my thesis. More to come at the same bat channel*/

Since February, I’ve been struggling with the story and the interactive elements of my animations.  After brief meeting with Marina Zurkow and Georgia Krantz, I had a better sense of direction. Both of them encouraged me to focus on figuring out the story that I wished to tell as well as my intentions for my audience in terms of a response . Focus on the story and not worry so much about the ideal interactive element(s) yet – that would (hopefully) come later.

So, for quite some time, I focused on the moments that stayed with me after the passing of my little brother as well as the formative stops along the journey that shaped me from that moment of loss to the present day.   The more and more I thought about this journey – The more and more I felt that this story was one that resonated with me, but I questioned whether or not  the story would connect with my intended audience.   I felt that I was walking the fine line with a story that was personal but one that my audience would not be able to relate to in the end.

So, after a marathon shower session (some of my best ideas come in the shower), I decided to frame my journey within the context of 3 separate myths.  One myth would revolve around loss while the others would follow the themes of being lost and then found.  Even now, I debating whether or not the narrative will be either linear or non-linear, but I will figure that out very soon.

After a bit of soul searching and writing, the story of the first animation came to me.  At the moment, it is tentatively called – The Myth of Myles & Selym. The myth is one of loss, so I looked to other myths about loss and separation as inspiration such as the Greek myth of Orpheus and Eurydice.  I also wanted to tinker with the concepts of the call to the quest, a goddess walking among us in the guise of an old woman, choice,  thresholds, and threshold guardians.  Here is a synopsis of the 1st animation:

// Beginning of Story

For many centuries, the world was covered in boundless green, but the great ocean swallowed all land as far as the eye could see. So, that known world was no more.

Yet, high in the sky, hidden within the clouds, the floating city of Huma sparkled in the night sky. The people of  great city only knew the world as seen within Huma's walls. The had no memory of the lands below - just the vastness and the terror of the infinite blue ocean.  

Due to the fear of the infinite blue, all remained confined within the city walls content with their existence. Huma was seen as a refuge in the sky protecting all from the dangers of the outside world. Due to this belief, all inhabitants were forbidden to leave it walls. Flying has been forbidden for nearly 100 years because it is believed that no lands exist below, no other cities reside above. So, there is no point in venturing out since the outside world is uncertain and dangerous. As a result, all modes of flying have been eradicated and have disappeared fromt he consciousness of woman, man, and child .

In Huma, lived to brothers - Selym the younger & Myles the elder.

For many years, the two of the same blood were inseperable. But, as Myles the elder entered manhood. The two brothers of the same blood grew distant and began to walk along seperate paths. At times when the two crossed paths, they rarely spoke or they simply argued.  

When Myles and Selym were children, they once dreamed of crossing the threshold of the city walls to discover the lands of their ancestors below. Yet, when Myles aged, he turned his back on that dream and merely saw it as a child's fantasy. His reality was a life within the confines of Huma. Instead of looking to the sky - he should only look what was right before him and lead a contented life within Huma.

But, Selym the younger was different, he held onto the dream of conquering the infinite blue below to disover new lands, people, songs, and journeys. Instead of a refuge, Selym saw Huma as a city trapped within a golden cage.  All around Selym saw him as a fool because the unkown outside the confines of the city were seen as a danger that could not be surmounted,  Selym saw the unknown as an opportunity for adventure. 

Despite all of this, Myles tirelessly attempted to bring Selym back to reality. So, the two brothers argued often. Myles truly loved his brother, so the intent of his words were to draw Selym's gaze away from the sky towards the road right in front of him, but it seems that his words did harm instead of good because instead of looking forward - Selym's eyes remained downward cast  riddled with anger and doubt.

One day, as the two argued, Selym spied a peculiar beggar on the side of the street.  His peculiar dress did not match any of the inhabitants of the city, and the beggar hid his face behind an even a more peculiar mask.  Right by the beggars feet lay an empty cup and a sign that read "Spare Change in exchange for Change". On a whim, Selym tossed a coin into the beggar's cup. The beggar looked up to Selym with his expressionless mask and spoke.

What is your name? Selym answered back. Come with me and I will give you a gift for your kindness.  The beggar arose and motioned Selym to follow him into the neighboring alleyway. Selym had a child's curiousity so he followed the beggar without hesitation. 

As the exchange between Selym and the beggar occurred, Myles watched with silent suspicion.  When the beggar motioned for Selym to follow him into the alley, he urged his younger to relent. But, Selym acted on his own and Myles words were unheard.

So, in order to protect Selym, Myles followed his brother into the alleyway. When the two brothers were in the space. The beggar looked for a moment  at the curious eyes of Selym and the suspicious eyes of Myles.  He then asked for Myles name but he remained silent. Selym revealed his brother's name. Selym asked the beggar his own name and simply replied Anan. 

Immediately after giving his name, Anan immediately raised his hands and out of nothing - something  appeared. Eight brilliant keys appeared on the fingers of Anan.

Selym was drawn in with wonder while Myles was repeled in fear.

Anan asked Selym to choose one of the eight keys as a gift for his generosity. Selym quickly chose one. Upon his choice, Anan fixed his gaze upon Selym for quite some time. He then fixed his gaze upon Myles and said that - "though you did not give as your brother did. I will let you chose a key as well because the two of you are one of the same and of the same blood but you will follow different paths"

At first it appeared that Myles would not take up Anan on his offer, but he decided to take a chance and chose a key out of simple curiousity.

Once the two brothers had their respective keys in hand. Anan motioned as if he were to leave. As he walked away, he spoke out loud -

Every key has a lock meant to be open. Every choice has an opportunity and a consequence.  Selym you will find your way soon enough but your brother may take some time. Again, I want to thank you Selym for your kindness. Now, I may finally be able to return home.

Selym reached out and asked Anan where his home was. Anan simply replied  - in the lands beyond the clouds and the infinite blue. 

In a blink of an eye, Anan was gone. 

In the moment after, one brother believed  while the other  was filled with doubt and did not believe.

As the days and weeks followed, Myles soon forget about his chance encounter with the beggar Anan and continued on with his mundane existence. His key was soon forgotten.  Yet, Anan's words stayed with Selym every waking moment of the day. Wherever he went, Selym carried the key given to him.  Wherever he went, he wondered where he could find the lock to his key.  In a moment of despair, he thought of discarding the key given to him - and within that moment of despair - it came to him. Their was something in the key that he had seen before. Immediately, Selym ran into the night to the edge of the city where his had seen that symbol before. Upon sight of the symbol, Selym drew out his key. 

As a result something miraculous happened.

A way appeared where there once was none.

A shining path appeared in the night sky connecting his conccious world with one hidden within is unconcious- and in the distance something appeared.

Without fear and with all his might, Selym crossed the night sky leaving the world of Huma and crossing the threshold into another world.  What laid before him appeared to be a temple of the ancient lands he once read about as a child. As he entered, he was overwhelmed with a feeling of remembrance - as if he had been here before.  This feeling  guided him with each step in the space. Some call it intuition. Knowing without knowing how.

When he reached the alter of the temple. Selym found the one in the missing pair. The key was finally joined with the lock. Leading Selym to what was once hidden. Leading him toward an experience that had been waiting for him the moment he drew his first breath into this world. Leading him from constraint to freedom. 

Knowing without knowing how. Selym awoke this mechanical bird from its sleep and rose up into the night sky.  He flew over the city of Huma looking down. He was overwhelmed by the beauty of the city of the night sky. Whenever his eyes moved away fromt he light of the  city, he saw the darkness of the night sky surrounding him.

Now was his chance to see what laid beyond the confines of the city walls.  He simply wanted to see beyond what he had known.

He wished to transform the unknown to the known but he had every intention of returning home.
He wished to transform the unknown to the known but he had every intention of returning home.
He wished to transform the unknown to the known but he had every intention of returning home.

He thought that, If he could find the lands beyond the infinite blue ocean, he would return home to his brother and show him that their shared dream as children was indeed as true as the warm bond that they once shared.

So, a determined Selym disappeared into the night sky. 

The morning after, Myles was surprised when Selym did not return home night before. He simply thought that Selym lost track of time being lost in his daydreams which was always the case.   Yet, as the day transformed into night. Myles became more concerned. So, he wandered the streets of Huma in search of Selym, but he still could not find him.  Many days and night followed without Selym returning home, and Myles grew more into despair and regret. Every night, he would wander the streets in search of his younger brother. 

In his search, he had heard from others about a shining bird appearing above the the ciy of Huma disappearing into the night. From then on, Myles knew without knowing how that his brother would not return, but in denial he continued to search for his brother every day and every night.

Some believe that Selym was able to cross the clouds and overcome the infinite blue ocean to find the ancient lands below and new cities above. While others believe that Selym reached the heavens instead transforming to a brilliant star in the night sky residing in the company of the old gods. 

What became of the brother, no one knows but it is believed that whenever the the star of Selym appears in the Western Sky. His Adelphi star - Myles hovers quietly in the Eastern sky as if in waiting before it eventually disappears going on a path of its own.  

// End of Story

After finalizing the story of The Myth of Myles & Selym, I had to make a decision as far as the visual aesthetic of this animation.  For a time, I toyed around with the idea of creating a 2D animation solely in After Effects; but, after a few initial sketches,  I decided to attempt a 3D animation instead.

Despite my best wishes, my experience with 3D animation software was limited.  So, I tracked down a 15 hour tutorial of Cinema 4D R14, and I holed myself in my apartment until I had a solid grasp of the software. In the tutorial, I learned about C4D’s  User Interface, Modeling Tools, Materials, Rigging, Particles, Animation, & Rendering.  Below are renders of the world of Semele that I built.  I also modeled the flying craft that I intended to use in the finals scenes for Selym with help of the tutorial.

Cinema 4D Screenshots

The City of Semele requires a few more tweaks. At the moment, it appears that the city is floating in space when it should appear to be floating in the night sky. So, I will need to add clouds as well as the proper illumination to represent moonlight for the night scene.   The first animation needs to reflect the passage of time as the story progresses, so I felt that I needed to create an environment with both a day/night cycle. So, that took a bit of time to build and figure out. Yet,  I’m very happy with the results, but I still have a ways to go.

During Spring Break, I really need build the 3 main characters (Selym, Myles, and Anan), rig these characters, and build the scenes.  The inspiration for Selym & Myles is a pen sketch that I did some time ago. Here is a scan of that sketch:

twobrothers-e1364401383446.jpg

If you look closely at the sketch, you will the side profile of two faces conjoined much like the Janus Coin.

The face on the left is a representation of Selym and the one on the right is a representation of Myles. The sketch is bit abstract, but I like it. I think that I will base the characters on this sketch by utilizing both ZBrush and Cinema 4D.

All these tasks have been rather difficult since I’m visiting Austin, TX for the Spring Break to see whether or not I will stay in New York or possibly relocate to Austin (or maybe San Francisco if the right opportunity presents itself) after graduation.

At the rate that I’m going, I’m fearful that I may need to condense the last 2 animations into one, but I cannot worry about that at the moment. If I can pull off one animation of high quality that has interactive elements, that would be a success in itself.  So, the worst cast scenario is that I complete on great animation.

Also, I’m reading the Writer’s Journey by Christopher Vogler as a recommendation from Katherine.  Actually, Eric Rosenthal brought up the book after my Midterm Presentation.  He asked me whether or not I had read the book. Mistaking the book for another that I read, I answered that I did.  A day after the presentation, I realized that I had not read this book, so I decided to purchase a copy and read it for the first time.

The Writer’s Journey is a book that explores the structure of mythology and storytelling to assist writers, screenwriters, game designers, etc.  Vogler’s work is inspired immensely by the works of mythologist Joseph Campbell & Psychologist Carl Jung.  Since I’m also a fan of both of these figures, Vogler’s approach within his book truly resonates with me and will be a true guide for me in this challenging process.

I will be sure to give another update sooner than later.

Until we meet again,

Kojo