All Posts

Announcing completely free e-learning website for digital media production

After nearly a year and still keep going effort, I am happy to announce the Vfxware Interactive Moocs MOOC platform on digital media production. Now the site is free to registrate, free to check course content after registrating. Currently there are 4 courses on site, the major course is the 3D fundemental course I managed with more than 2000 minutes video materials. Current courses are all in Chinese, mainly for my students in the university class, software version I used is in English however.

Arnold reduce preview rendering stuttering issue, and make computer more stable on long renderings

Sometimes Arnold preview rendering in both Hypershad and Arnold Render View cause stuttering issue on my computer with dual cpus and many cores. This is inconvenient for me since I used to record many tutorials for students, Arnold stuttering will stop the voice since all cores are occupied. The fix is acutally very simple, in the System panel of Rendering setting in Maya, uncheck the Autodetect Threads option, and enter a negative number in the Threads block, then it will reserve some computational power, which is good for recording.

Nginx configuration redirect non www to https www, with PHP and SSL support

Nginx is better than Apache in many ways, however their configurations are very different. A while ago, a friend pointed one of my site cannot be visited without www in the url, it caused trouble, since both and should be redirected to This was due to the web server configuration problem. With apache it should be vhost setting changes, but with Nginx since it uses special syntax, the adjustment is as follows.

Linux shell script batch increases volume for video files with ffmpeg

I recorded lots of tutorial videos for my students using a microphone which is not very nice, so here is an example to batch increase all video files’ volume for 6 db, and export to mp4 files. FOLDER=$1 for i in $FOLDER/*.mov; do name=`echo $i | cut -d'.' -f1`; echo $name; ffmpeg -y -i "$i" -strict -2 -vcodec copy -af "volume=6dB" "${name}.mp4"; done

Changed static blog engine

Since Python Pelican hasn’t been updated for long time, and GO language is simpler and faster, I switched my blog engine to HUGO today. All changes seems worked out! Thanks to HUGO Nuo theme maker!

One Click shooting HDR bracket images with 360 HDR Bracket Tool

Creating HDRI used to be time consuming and require some special equipment, vfx person used to bring heavy ball bearings or big mirror ball on set, and no need to mention that aligning those balls with camera lens axis is nearly impossible, which means it usually ends up imperfect HDRI images produced. Although some expensive controlable platforms designed for DSLR can compensate such issue, making HDRI at much higher resolution, it is still not convinent to do such work.

360 HDR Bracket Tool For Theta App

Welcome to my blog, and thank you for purchasing my app. The 360 HDR Bracket Tool For Theta App I developed is intented to provide a low cost and convenient on set 3D/VFX production tool, working together with a RICOH Theta S or Theta SC 360 camera. This app is capable of shooting multiple 360 images with wide range exposure level settings automatically, which is more than the official Theta App can do.

Deploy a pelican project on Ubuntu/Debian development environment

I just switched the template of this blog site, changed the url, made the changes on url of, will online a whole new home page, so that this blog will be only a part of the new site system. As a note, I put how to setup pelican here, after 2 years using this static blog system, I still think it is one of the best option. To setup the pelican project,

D3.js two nations geographic example

I got involved in a data analysis project that needed a website with program genereated diagrams. Quickly after some research, I found echarts from, and D3.js are the most popular diagram plugins currently. Given sometime for my first experiements with these data visualization frameworks, I got some result here, in the end actually I acquired an award from it, lol. There were still lots of work left for this, but I’m glad that I worked it out, especially I’m happy with the Async Programming technique part I learned.

CUDA 6.5 starter example with timing and Unified Memory access.

Now, I’m on the Chinese New Year holiday, got some time to learn CUDA which I left it behind for long time. I found the CUDA Programing Doc doesn’t present a complete unified memory code. Here is the a blog article about the unified memory in the CUDA 6+, so what I did here is just implementing this developer friendly feature merging with the working method of timing both GPU kernal run time and the same function on CPU’s run time.