Moving to the United States: Part 1

Just over one year ago I took the pretty huge step accept a job offer and move to the US. It’s been a very interesting year, and I am surprised how fast it has gone. Especially the last 6-7 months have just flown by!

There are a few things here done differently than in Norway and Europe that is very worth mentioning and knowing about if you even plan on moving. Chances are with the strict VISA system in the US that you either have an employer or family to help out. My situation was the the employer helped on some things, but getting up and running was up to me and my wife. And that also meant realizing the hard way that the US system can be hard, expensive and feel unfair to you when you’re not already “up and running”. That especially goes with the Credit Score system being used. The more you know about it, the better prepared you’ll be. That means you hopefully have more time to enjoy all the good things the US has to offer too!

Unlike Norway, and I believe Europe in general, the US have a credit score system where you have to build up good credit. If you ask for a loan in Norway the bank will look at your income, current loans and expenses and if you ever had any bad payment remarks. So you basically start out in a good standing. In the US this is turned around. You start with a bad credit score, and you have to build it up. No-one cares if you earn $100k a year. Do you see a problem here? 😉
To make that even worse, from the time you move and you go register to get a social security number you’ll probably have to wait at least two to three weeks. Then from the time you have a social security number to the time you get your first credit score report is typically another 3 to 4 months. That’s close to 6 months before you even get your first bad score. So be prepared for this. Without a credit score you won’t be able to rent at many apartment complexes. Some luckily have deals for foreigners, but be prepared to pay 3 to 4 times the original deposit.

Without credit score you won’t be able to get a Credit Card. But you need Credit Cards with available credit to build your score. So another fun situation. The way around it is to pre-pay for a “secured” credit card. That means you pay $500 to the bank, and they give you a card with $500 available. You’d think that’s your money, but no. You have to pay interest and everything on what you spend, just like on a regular credit card. That makes sense, right?
But if you play your cards right and know what to do, it is possible to get a decent to good credit score within your first year. There are plenty of great guides online. Just keep in mind that things are hard and extra expensive until you get a good credit score. A car loan with bad credit might be at 20% APR or more, while with good credit it might be 3% or even 0% on new cars!
So TL;DR: Have a lot of savings when coming. Things are expensive with no or low credit score. Don’t except to get any loans or credit cards the first 4-6 months.


Towing:

I’ve been towed a couple of times. My own fault of course for not reading the signs properly. If you park outside a closed store, chances are your car will be towed. I am used to getting a smaller fine for parking illegally. Here they take your car and usually drive it pretty damn far away. The minimum towing fee where I am at is $210! And then extra expenses for time in the compound after that. So get your car out quickly! If you don’t have the money to get the car out, it’ll just get more expensive as you wait. Watch out for any towing signs when you park!


Checks/Cheques:

This is more a fun fact than anything else. Even though it’s not something I have to deal with often, certain payments are still done by checks in the US. To me that is like communicating via Fax, so I find it funny. I had to pay my first apartment rent via a check. Which meant I had to go deal with the bank etc. etc.


Banks:

The banking system in the US feels outdated at best. Moving money between accounts can take days. If you have text messaging enabled for your account, the texts usually come hours later. For example if you pay for something by card at a store, the text message for the transaction usually comes 2-3 hours later. Not instantly like other places in the world. Also the fees are much higher than what I am used to. To top it off the security feels abysmal. No two way authentication available! And your password; Chances are you can have max 12-16 characters – and special characters might even be illegal! Ain’t that something?!

Then on to some good things too!


Friendliness:

Americans are very friendly and out going. For a cold, introverted Norwegian this is a bit of a culture shock, lol. I don’t mind it, but took me a while to get used to random strangers talking to me and such. Just return the favor and talk along. It’s just chit chat.


Entertainment:

The US is definitively the entertainment capital of the world! So many things have been adapted into a pure entertainment form, and I just love it! There’s really never a reason to be bored, as there’s just so much to do. At least in the cities. I cannot talk for the country side.
You have things like Top Golf where you can drink, eat good food and snacks while hitting golf balls onto the green. Now they also included score zones and points, to you really compete with friends in a very unique and fun way!
If you like arcade (and drinking) then Dave and Busters is the place to go. Massive arcade hall with alcohol serving. Most of the games also give you ticket rewards for playing good, which you can trade for gifts at the gift store. Excellent!

This is just a very quick round up of my first year here. It’s been a blast, and I am looking forward to the next!

3dsMax: Select Occluded Objects

I decided to fix, eliminate some bugs and improve usability on one of the most handy scripts I have. Very often I have worked with large files coming from CAD data. It’s files that just makes your computer crawl. Could be 30 000 objects or more. And most of them are usually hidden inside other objects. Like small engine parts inside the engine, wires and components inside cabinets and other internal components. In my job it have never been the point to show these parts, so we always spent days and weeks cleaning up the files. Often we put hundreds of these heavy parts together in one 3dsMax scene, so optimizing these were extremely critical.

selectvisible

But even in smaller cases it can be very handy to either delete objects not visible to the camera, or even for organizing your objects in layers etc.

I must admit I once saw a similar tool, but it was encrypted and locked in-house. So I started browsing a lot of forums and reading up on guys way smarter than me on possible solutions on how to make my own version. After a while I got my own version working. It has some flaws and limitations. It can only handle 65536 objects at once due to some internal 3dsMax limitations, and it could certainly be way faster if the scanning procedure was for example recreated in C++. That’s out of my scope though.

Anyway I recorded a video showing the tool in action. If the tool helps you out in any way, or you just have general feedback I would love to hear from you!

EDIT: After publishing v1.2 I got some help from very skilled fellow artist Jerome Moab to optimize the scan. The new v1.3 should be much faster!

Deadline Custom Sanity Check

110405_deadline
To kick off this new blog I want to dive straight in for a specific Thinkbox Deadline feature. For those who don’t know Deadline is a render manager, similar to Backburner. Deadline has tons of advantages over the fairly outdated Backburner. I can honestly say that the cost of Deadline is small compared to the hours is it GOING to save you on wasted render time, and not least work hours spent on hunting down errors with the renders. Best of all, if you’re a freelancer or a small studio Deadline is free for two nodes.

Anyway, one of the really nice things about Deadline is the Sanity Checker. I will look at the one for 3dsMax here. Before you send your scene off it will check numerous things that can cause issues and common mistakes, and warn you about it.
Sanity Checker

One of the issues I kept seeing a lot was the render elements not being saved when people used the V-Ray Frame Buffer.
This happens when a user have the VFB enabled, but have not specified to Save Separate Render Channels. It can be solved it two diffent ways:

1. Disable the VFB, and let 3dsMax use it’s regular internal system
OR
2. Enable Separate Render Channel and choose an output path.

V-Ray Frame Buffer

Understandably it can cause a lot of frustration sending out your large render job, only to find all the render elements are missing hours or maybe days later! So how do you add this as a check into the Sanity Check?
Luckily Thinkbox has thought about this. For 3dsMax you have to go into your Deadline Repository.
<DeadlineRepository>\submission\3dsmax\Main\

All the sanity check files and more are located here. To make it easier and prevent custom code being lost if you update Deadline there are two files you need to be aware of. The SubmitMaxToDeadline_SanityCheck_General.ms holds the default sanity checks shipped with Deadline. While SubmitMaxToDeadline_SanityCheck_Private.ms is the file where you can add your custom checks. This file should not be overwritten by any updates, while the general most likely will be.

Looking at the Private file it is all normal MaxScript code, and it’s divided into three different sections.
SMTD_Private_SanityCheckFunctions: Here you add your check as a function. It should return false if the check fails. True if everything is ok.
SMTD_Private_RepairFunctions: Here you add the function on repairing the issue if found.
SMTD_SanityChecksToPerform: This part ties it all together. You add in the checks you write along with the error message the user will see.

The General file is great for reference, but do not edit this one!

So lets dive into the real stuff! Open SubmitMaxToDeadline_SanityCheck_Private.ms and remove the two blank functions. Let us first off all create the Custom Sanity Check Function. It needs to do a couple of things.

1. Check if we’re actually using V-Ray as the current renderer.
2. Check if the V-Ray Frame Buffer is enabled
3. Lastly if the VFB is enabled, is the Separate Render Elements disabled?
4. So if VFB is enabled, but Separate Render Elements is not. We need to fix this. Return false. If not return true.

Let’s call this function CheckForVFB. This is the code I have written for this check, following my outline above.

fn CheckForVFB =
(
vr = renderers.current -- get current render engine

-- If the name of the render matches V_Ray* then check if VFB enabled and Separate Render Channels is disabled
if matchPattern (vr as string) pattern:"v_ray*" ingnoreCase:true then
(
if vr.output_on == true AND vr.output_splitgbuffer == false then
(
return false
)
)
return true
)

The next step on how to deal with this issue involves a bit of personal taste. We could enable Separate Render Channels, but then we need make sure the path is set correctly. I am going the easy route here. I want to warn the user about the issue, and the fix will be just disabling the V-Ray VFB. The fix will only be applied if the user right click the error. They can fully fix it manually in any other way now that they will get the warning.

I call my Repair Function FixVFB. The code for this fix is very simple.

fn FixVFB =
(
vr = renderers.current -- Get current render engine
vr.output_on = false -- Disable V-Ray Frame Buffer
)

If you want you can also add a message to the user that VFB has been disabled. This could be a good idea. If so add something like this line right above the last bracket.
SMTD_SanityCheck_errorReportRollout.log_action “Hint” (color 155 0 0) false “V-Ray Frame Buffer (VFB) has been DISABLED!”

Now we have both functions we need. The last step is tying it all together in the SMTD_SanityChecksToPerform section. This is a nested array, and looking at the General Sanity Checks is a great reference here. It contains a few parts.
1. What function to run for the check. The function is inside the SMTD_Private_SanityCheckFunctions struct so the full command is
SMTD_Private_SanityCheckFunctions.CheckForVFB
2. Type what kind of error this is. I would go for a Could Be Fixable = #fix
3. Enter an error message to show to the user.
4. Now enter the function to fix the issue. Same setup as above. Struct name + function name.
SMTD_Private_RepairFunctions.FixVFB
5. End with true. To be honest I have not looked up what this does, but it is included in all the checks in the General file.

My custom line then looks like this:
#(SMTD_Private_SanityCheckFunctions.CheckForVFB, #fix, "V-Ray Frame Buffer Enabled, but not Render Channels. Any Render Elements will not be saved!", SMTD_Private_RepairFunctions.FixVFB, true)

That should be it! Let’s test this out!

sanitycheck
TADA! Works as a charm. If you right click the warning it will turn off the VFB in render settings.

There is one thing to keep in mind. If you create more functions you need to separate each functions with a comma after the end bracket. This goes for everything except the last function in any struct. Again look at the General Sanity Check file and how this is set up. I have included an image of my full script below should you have any issues.

Since this is one of the first blog posts I am sure there’s a few things that needs to be worked out. Feel free to contact me for any suggestions or if you see any mistakes in the post!

customsanitycheck

A new bloggining

More than a decade ago I quit my job in IT. Well, to be honest I had just finished a two year internship as part of my graduation, but I already knew this wasn’t a job that made me happy. Large parts of my whole youth had been oriented around computers. Yes, I had my NES and SNES. Even a C64 and my trusty Amiga 500, but the PC was different. I spent hours, days and weeks learning everything about it. Starting with small stuff like configuring autoexec.bat and config.sys to clear up a few Kilobytes extra RAM to setting up Linux servers. I learned the ins and outs from the days where you had to be moving jumpers around, battling IRQ and DMA conflicts to get both your sound card and network card working at the same time.

But what captured my attention the most was the ability to create! With friends we were making music in FastTracker II, 3D animated videos in Microsoft 3D Movie Maker, coding text based games in QBasic etc. We joined the Demo Scene and at one point we even started working on a platform game in C. With no idea that any of these things could really lead to a career, or how, I went for the closest thing I knew about. A general degree which was brand new at the time in ITC: Information Technology and Communications.

Anyway, going back to where I started. After my intern period I had to sit down with myself and think through WHY this career wasn’t making me happy. It should be my hobby, right? And it should be a walk in the park to do too. Well, I realized I had really nothing to look back at after those two years. I installed a ton of software, replaced printer toner cartridges and did a lot of both phone and on-site support. And at least half of all the people I helped were still pissed off that they had computer problems in the first place. But there was nothing I could proudly point at and say “I made that!”, “I did that!”.

The short story is that this realization made me quit my job. I didn’t have a plan, but I needed to think things through. 6 months later I was back in a classroom, about to start my journey as a 3D-artist. I’ve had some friends doing 3D in the demo scene, but my own experience with it was minimal. At once I was back were I was in my teens. I had fun! It was challenging, it was creative, it was technical. I got my curiosity back and I was creating things again. Sure, it all looked like shit, haha, but that’s not the point. Quality comes later.

I landed my first job after school as a contract Character Animator. And short story from there I’ve done a lot of different jobs. I have worked my way up from an animator and modeler to do lighting, render and comp. At this point I started bringing in more of my background in IT again, aiming for more of a Technical Director role. I started scripting, took control over the render farms. Setting up pipeline system, tools and try to use my experiences to make the work days go smoother, faster and easier for both me and my co-workers. Today I am also studying VFX in two of Allan McKay’s classes. FXTDT (FX Technical Director Transformation Mentorship) and in the first group of students for the Live Action Series.

And that brings us back to this blog! I want to share some of my knowledge and hopefully help a few of you fellow artists that are looking into going this path. Many of my scripts and tools are already available here and on scriptspot.com , but here I want to do a more mix of discussions and tutorials on some more technical things.