I’ve got the mother-in-law down for a few days so programming after work is out because I can’t ‘zone’ with all the conversations going on.
This hasn’t stopped me from working with Blender to increase my skills with it though.
I can now easily import 3D models and animate them. Slamming text and jiggling them around is very easy too. All in all, another good demonstration video produced in a little over an hour. Fast moving 3D animated text and models with a video textured background. I’ve impressed myself this time. No stopping me now.
The server software and the Android app development will continue within the next two days when I can ‘zone’ again. There’s not much left to do on the media management software. Then there’s the device management through an android app. I’m also looking into SSL and other cryptography methods for secure communication all round.
As well as the programming blitz I had over this weekend to get my server up and running which still has a bit of work left to do, I’ve also done a few bits with Blender.
In blender, I am still having an issue with the sun light shadow not being consistent. This ended up with me asking some of my contacts on social media about it.
One suggestion worked which was using an orthographic camera instead of the perspective. It was short lived though as all my animations would end up being flat.
In the same response, the friend also suggested angling the camera and using a bevelled edge on the text. Now this technique did work much better but the sun light is still causing the lighting shadow problem.
Now what I’ve done is to angle the camera and set the sun light up at the angle that works best for now. The text creation in blender get extruded and a light bevel which gives the rendered image an almost decent look to it. It will work for most things, so that will have to do for the time being. I may dig further into blender.stackexchange to see if there are any solutions to this, and if not then I will ask a question.
For text produced using GIMP, I’ve also figured out how to cast shadows through the transparency of the image. This will come in handy for a lot of things.
When using the animations, i.e. moving objects around the scene, the default movement settings for most things were fine. But I wanted to ‘slam’ text on the screen. The default settings would slow down, or ‘ease in’ the movement. Without even googling it, I figured out how to change the ‘ease in’ and ‘ease out’ settings. I can now ‘slam’ objects onto the screen. A simple, but effective effect.
I’ve an old Dell Precision 4500, i7 @ 2Ghz with an nVidia Quadro 1800M. I got it cheap off eBay and upgraded it. RAM went from 4Gb to 8Gb, replaced the 320Gb HD with a 960Gb SSD and added a 1Tb HD in the place of the DVD drive. I use it for 95% of home use now.
Oh, and I added USB 3.0 to one of the PCI slots.
The eSata port has come in extremely handy on many occasions too. I don’t know what it would be like having to swap drives in the laptop all the time whilst I was upgrading other laptops.
Simply put, it is fast…
Tonight I tested myself against the clock with creating a demonstration video in Blender. In the background my laptop was moving a load of files from the SSD to the 1Tb HD. I wanted to get everything done within an hour. No programming tonight.
First 5 minutes was thinking of an idea, then it took about 10 minutes to collect artwork together and create the project folder with the assets.
The demonstration, with a video texture, lighting and shadow, was all done within an hour. I was happy tonight.
The test of my laptop didn’t end there.
I decided to create a new project with another demonstration idea, while Blender was rendering the project as a video file. *big grin* nothing slowed down even though the CPU was being obliterated.
Yup, I like this laptop.
Running Linux and Windows 10, but all my work gets done in Linux.
After work today I was zapped, but I got the file structure tested and confirmed on the server side for the initial testing. Everything is using Linux so it is easy to set up the testing grounds. I’m trying to make the device installation as quick as possible with minimal fussing about.
Oh and I also fixed a bug with the ‘~’ (home) location in java. Using ‘user.home’ gives me the home directory (actually on Windows too I found out but not tested, no need).
Eventually all of this will be in C++ so I’m 0% stressing at the moment. The servers will need to be C++ because of the JVM overhead.
I also fixed my PC in Linux which was not connecting to many websites. I had set up the fixed IP for testing without setting the routers gateway correctly. Chrome seems to mask this by loading up some websites but the rest it couldn’t find. The fix was done by assigning the fixed IP on the routers side. Eventually a VPS will cause me a few headaches.
I think tomorrow I will get back down to using Blender because that is the main source for this project. Royalty free 3D models/animations I want to test out.
I’ve been doing odds and sods today.
- Play a list of videos on a continuous loop full screen. By using libvlc and the Java wrapper I’ve finally got a full screen player working in less than 60 lines of code which plays a list of video files.
- Write a server and test over the internet. Using just a Java server, the initial test worked which was to accept a connection and send “Hello world!” back. Now that it is running I can expand the server with all the functionality I require. This will be handling the back-end database, media and installations.
- Define a KISS (Keep It Simple Stupid) database for handling devices and media.
- Write a mobile Android app to manage the setup of devices and assigning play lists. This is going to be a big one and a lot of work and I need to be on site when setting up devices and getting them playing without glitches.
- Expand on the software for the media player so that it can update itself from the server with not only media updates, but also software updates.
- Run an outside test live over the internet and update the playlist.
- Get more experience with Blender and video creation. For the most part, I’m more than capable of producing the videos in approximately an hour for everything I need. The more I get familiar with Blender then I can add more effects to the videos which will be a bonus.
- Bully test the server. I already have someone on hand that can test the servers integrity and stability. Pen-testing the server will give me some good pointers to how to make it more secure. I’m also considering the 2 way login.
That’s the plan for the next couple of weeks. Just so long as I get some free time I can move along quite quickly with this with the exception of the bully testing and updating.
Right now, things are looking almost bullet proof. Fingers crossed.
I forgot to add the VPS (Virtual Private Server)
Since getting home on Friday after work, I had a plan.
- Figure out the animation and timeline in Blender. I’ve done this. I can now rotate, translate, scale and modify objects on the timeline. As well as texturing, particles and other things useful for animations. I’ve still yet to show video in a texture, but that looks a doddle.
- Play animations (for testing) from the ‘.blend’ file. This was a bit fiddly as I had to use the Blender Game Engine and all the animations I had done for each individual objects, I had to add in the ‘BGE’. The Blender player works fine with the ‘.blend’ files with many exceptions. There’s a lot that Blender can do that the player doesn’t handle. A simple one is the morphing of an object. Which rules out a hell of a lot of Blenders stuff.
- Blender rendering videos. Awesome this one. It will render videos to OGV format. All effects included, or at least I hope so. I’ve rendered a 15 second video many times on my laptop in the background (it is an i7) and I can still get on with other stuff. This will be much quicker on my PC, but my laptop is darn fast as is.
- Use Bash or another scripting language to play the videos because the Blender player, although fast and smooth, doesn’t do everything. I’ve been successful with Python and the VLC plugin for it, so I now know I can use the VLC library to play these files. I’m still beginning with Python, but it did show me how easy the VLC library is to use.
Although I’ve made sure I’ve put time out to get out this weekend just to keep myself in a good mood, this progress has been great.
It’s a long learning curve with Blender, but at the moment, I can make use of it to do 90% of what I need it for. 30 frames per second with a medium 3D scene was taking on my laptop 2.0 seconds per frame to render at 1920 x 1080. And 15 seconds of full quality is about 12Mb.
The framework around all of this will be a WIP from today and it is going to be so awesome even I can’t wait.
The next stage for me will be integrating custom engines to produce these animations better then the Blender player without the need to render video files.
Back to Blender… See y’all soon…