Bringing 2D into 3D
Momus Park was the first time we tried this with surprising results. For those who don't know, the majority of the textures used are based on the The Starry Night from Van Gogh. Trying to imitate the spirals and the brush strokes from the sky and the city on the models.
In this project, we took these ideas and methods a step further, by not only trying to recreate the texture but also the looks inside the painting. Creating in that way a world in which wherever you went or looked, you experienced the sensation of being inside a painting, uniting 2D and 3D.
Actually, this is not a new concept, however most of the 3D works that try this method are static images or videos, an impressive technique and design without a doubt but it's a shame that you can't go around the world they created.
Where to start
Once we have limited what we want to do and the feeling we want to get, it's time to gather references and styles.
In this case, we were looking for artists that had painted open aired spaces and gardens, since the main theme of this world it's called Avatar Garden. Meaning that the player have to have places to walk throught, select the different avatars and relax zones where the players can meet with other people.
The other condition that we put ourselves was that it had to be a classical painting, since we were connecting the 3D and the 2D, we thought it will be interesting to join a classic art medium with a new one. Putting this two things together inmediatly gave us the thought of the impresionist movement, with artists such as Claude Monet or Édouard Manet.
This style has a lot characteristics that make it ideal for this, the textures have a lot of personality with a strong presence of brush strokes and spots of colours, making it really easy to create tileable textures. Finally after reviewing a few artists, we decanted ourselves for Gauguin and his tahitian landscapes.
Once we have an artist selected, it's important to take notes. Each artist has a particular style that took years to develop, and if we want to recreate their paintings or artworks, it's a must to try to imitate these details. In this case we can pinpoint a few things from the get go that will helps us in order to recreate it:
When we have these main points clear it's time to prepare the props and the assets. To get started, we created some of the most basics props to fill a simple scene. That way we can define more details and polish the models even more.
This also helped us to develop a pipeline that allowed us to work more efficiently, which more or less consists of this:
Finally, in the spirit of Gauguin, we decided to change the world to an island instead of a garden.
Improvise, Adapt and Overcome
Creating this pipeline gave us an idea about what we will need to make, however it's not as easy as that. As always happens in these kind of projects, we found a series of problems. Especially when adapting some of the assets into the paintings style.
There were times when we had to reject some models because even though the final result may look impressive, the time spend on it, the resources it took or the number of tris, made the process not worth it.
For example this tree below (reference on the left), to recreate it we put a base on the leaves with a green texture, and them we recreated the yellow strokes with transparent planes. On the right you can see the tree in the process. Sadly we had to drop it because of the reasons stated above.
Other example comes from the vegetation, in particular from the bushes, since the forms are not very detailed, if took a lot of tries until we achieved a satisfying shape, it was a difficult time to make because a lot of times they resembled deformated spheres. Since this was a necessary model, we repeated the model until we achieved the desired result.
The most important lesson from this point is that not everything comes as one imagines it, so when you arrive to this, is important to stop and think about it. It is necessary? it is taking a lot of your time? how can I change it? This is normal, so it's important to improvise, adapt and overcome.
If you keep going you can finally obtain the desired results, as you can see:
While working on this project we discovered that it was a good way to test our limits, and what we can do inside an enviroment project. We tried to recreate a paradise that Gauguin viewed when he first traveled to Tahiti. All in all, I hope to see you there.
Before doing anything, let's keep some important stuff in mind:
Of course, first of all you need to have the SDK imported into the project in order to upload your content. Never mix the SDK2 or SDK3 in the same project, do clean uninstalls of the sdk prior to uploading or migrating the projects as it can corrupt your data. Currently (22/June/20) the most stable SDK is the VRCSDK2 as it contains the legacy inputs and triggers for worlds.
As the official page says: "Choose wisely."
Worlds with cross-platform support share the same "seed" or "world-id" provided by VRChat once you upload the world for the first time. There is no real limitation for the PC version more than having a thought on lower pc machines and not to overload the scene with RT events or graphics that require real-time processing.
To start the port to the Quest version, first of all duplicate the project as a way of back up and also to make the convenient tweaks you think you have to do to match the hardware limitations of the platform. The Unity profiles is a great help to know what is loading and how much is taking to render each frame of the camera.
As a creator, you should keep an eye on the performance of your world:
For the Quest version (which is the version that is going to run on an Android platform with graphical limitations), keep in mind the following hard specifications:
Prepare Unity to be able to upload scenes to VRChat
Once you have this basic setup, you now can press the big button and upload your content for the first time!
Once the SDK packages all your data and makes it ready to upload, prior to start it will ask you to put the name and other descriptions to your world (Unity will go play mode). Do a thumbnail, state tags or mark specific content and check the box prior to upload.
If you want your World to be public you must have at least "Known User" to be able to send it to Community Labs and let VRChat review if your World is good to be Public.
My PC build is live, what now?
Next steps are important, first of all duplicate your project, this way one project (development ended) will be the PC version and the other will be the Quest/Android version. I usually make use of the PC version as the master and the Quest version a semi-automatic downgrade.
Once duplicated, open the project with Unity. We are going to need the project in Android, once its open, go to File > Build Settings. You will see a list of diferent platforms to build your project with. Click on the Android platform and next click "Switch Platform".
Click on Switch Platform and wait until the process ends. It may take some time, depending on the size of your project. Once ended the platform switch, the Unity environment will be set with Android.
With the change of environment, you will no longer be able to do local tests so keep in mind to do "core" stuff on the pc build prior to duplicate the project. Use this project as a downgrade on texture sizing, high level compression and low-near-zero dynamic or real-time events being displayed on screen. With the same scene, the descriptor will be mantaining its World ID and with the upload the World will be updated with Quest support.
During the upload keep all info input the same as the PC version: name, tag, description...
That's it, we hope to see your amazing world over VRChat!