<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><generator uri="https://jekyllrb.com/" version="4.1.1">Jekyll</generator><link href="https://klise.now.sh/feed.xml" rel="self" type="application/atom+xml" /><link href="https://klise.now.sh/" rel="alternate" type="text/html" hreflang="en-US" /><updated>2024-11-23T19:06:47-05:00</updated><id>https://klise.now.sh/feed.xml</id><title type="html">Arturo Bracero</title><subtitle>DevOps Engineer interested in security, automations and the fastest ways to deliver outstanding web experiences.</subtitle><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><entry><title type="html">Ukraine Crypto Donation Tracker</title><link href="https://klise.now.sh/ukraine-crypto-donation-tracker/" rel="alternate" type="text/html" title="Ukraine Crypto Donation Tracker" /><published>2022-04-04T22:29:20-04:00</published><updated>2022-04-04T22:29:20-04:00</updated><id>https://klise.now.sh/ukraine-crypto-donation-tracker</id><content type="html" xml:base="https://klise.now.sh/ukraine-crypto-donation-tracker/"><![CDATA[<p>Tracks and plots funds in the official Ukranian BTC and ETH addresses. You can check the project <a href="https://ukraine-crypto-tracker.arturobracero.com/" target="\_blank" rel="noopener noreferrer">live</a> and view the <a href="https://github.com/sqr/ukraine-crypto-donation-tracker/" target="\_blank" rel="noopener noreferrer">live</a></p>

<p>Soon after the invasion of Ukraine started, the official Twitter account <a href="https://twitter.com/Ukraine/status/1497594592438497282" target="\_blank" rel="noopener noreferrer">announced</a></p>

<p>that they would accept donations of cryptocurrencies to aid in their defense. After the Minister of Digital Transformation, Mykhailo Fedorov, confirmed that this was legit, I thought it would be interesting to see how many people have donated. Would donators prefer ETH or BTC? What kind of ERC-20 tokens will they donate?</p>

<p>All these questions could be easily answered by checking different blockchain explorers, but not all on one site. After quickly checking that there APIs available for both Bitcoin and Ethereum blockchains, the project started, with the goal of completing it in less than 48 hours. Lets go!</p>

<p>The plan is simple: use two free APIs to gather information about the transactions, store the results in a database, and render the information on a chart.
Backend</p>

<p>The most important aspect to keep in mind as we approach data gathering is that the actual balance on the addresses is not important at all. Ukraine will cash out eventually and bring the balance down. We don’t want that reflected on the graph. All we care about are transactions that have these particular addresses as a receiver.</p>

<p>For bitcoin this is easy, as the <a href="https://github.com/Blockstream/esplora/blob/master/API.md" target="\_blank" rel="noopener noreferrer">Blockstream API</a> exposes this information as funded_txo_sum when querying specific addresses, as well as funded_txo_count.</p>

<p>Things get a little bit more complicated with Ethereum. Etherscan’s API only exposes the current balance or a list of all transactions, limited to 10.000 txs per query. Fortunately, they also store the block height of each transaction.</p>

<p>So the solution for ETH is to store on the database the last block height that has been checked, and next time we poll start on last block checked + 1. Check all transactions in that range and add them to the value last stored on the database.
Frontend
The frontend is an extremely basic react page without any particular styling framework. The most interesting part is the use of Rechart to display the data from MongoDB in a beautiful chart. The table for ERC-20 tokens is powered by React Table, an extremely easy to set up hook-based utility for React.</p>]]></content><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><category term="software" /><category term="crypto" /><summary type="html"><![CDATA[Tracks and plots funds in the official Ukranian BTC and ETH addresses. You can check the project live and view the live]]></summary></entry><entry><title type="html">How to apply Dynamics to a group of editable meshes in C4D</title><link href="https://klise.now.sh/how-to-apply-dynamics-to-a-group-of-editable-meshes-in-c4d/" rel="alternate" type="text/html" title="How to apply Dynamics to a group of editable meshes in C4D" /><published>2019-05-26T22:29:20-04:00</published><updated>2019-05-26T22:29:20-04:00</updated><id>https://klise.now.sh/how-to-apply-dynamics-to-a-group-of-editable-meshes-in-c4d</id><content type="html" xml:base="https://klise.now.sh/how-to-apply-dynamics-to-a-group-of-editable-meshes-in-c4d/"><![CDATA[<p>Applying Dynamics to a Cloner in Cinema 4D is a great way to get things moving! But maybe you have faced the following scenario: You have a bunch of geometry created from a cloner, make it editable, do your thing and THEN you want to apply Dynamics… but nothing works.</p>

<p>That’s because C4D only applies Dynamics to Cloner and Fracture objects, not to nulls with a bunch of geometry inside.</p>

<p>But there’s a quick tip to get this working: You just have to put the geometry inside of a Fracture object, and apply a Dynamics tag to that object, setting the options of Top Level.</p>

<p>Easy! Now you have Cinema4D Dynamics aplied to a group of geometry, treating each object inside the Fracture object independently. However, it might be wise to keep your objects in parametric state as long as you can, as this will provide further control over certain variables of the object that will disappear once you make it editable.</p>

<p>I personally prefer to keep a copy of the parametric objects and cloners before they are editable, mark them as such and keep them in the project save file until further down the line, when i’m mostly certain that they won’t be needed again.</p>]]></content><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><category term="video" /><category term="media" /><summary type="html"><![CDATA[Applying Dynamics to a Cloner in Cinema 4D is a great way to get things moving! But maybe you have faced the following scenario: You have a bunch of geometry created from a cloner, make it editable, do your thing and THEN you want to apply Dynamics… but nothing works.]]></summary></entry><entry><title type="html">How to import JSON files in After Effects CC 2018 to display Twitter data</title><link href="https://klise.now.sh/how-to-import-json-files-in-after-effects-cc-2018-to-display-twitter-data/" rel="alternate" type="text/html" title="How to import JSON files in After Effects CC 2018 to display Twitter data" /><published>2018-05-04T22:29:20-04:00</published><updated>2018-05-04T22:29:20-04:00</updated><id>https://klise.now.sh/how-to-import-json-files-in-after-effects-cc-2018-to-display-twitter-data</id><content type="html" xml:base="https://klise.now.sh/how-to-import-json-files-in-after-effects-cc-2018-to-display-twitter-data/"><![CDATA[<p>The aim of this tutorial is to demonstrate how you can streamline the creation of motion graphics thanks to the new JSON compatibility features in Adobe After Effects CC 2018 using Twitters API and Python. It will be divided in two parts, the first one focused on how to get the data from a tweet to a JSON file, and a second one on how to import this data and use it in an AE composition. If you already have a JSON file (it can be a tweet or any other kind of structured data) feel free to skip the first step.
Step 1: Saving a tweet as a JSON file</p>

<p>In order to do this we are going to use Python and Twitter’s API. An easy way to get going if you don’t have Python is to download Anaconda. You will also need to install Tweepy, which is the package we will use to get data from Twitter using Python.</p>

<p>The next thing we need to do is to create a Python script that takes the ID of a tweet, fetches the data and stores it as a .JSON file in our computer. Thankfully my friend Antonio Verdone wrote a script tailored to this need, that you can find here. Just download “tweet_to_json.py”, open a python prompt (if you are using Anaconda, “Anaconda Prompt” should make things easy), navigate to the directory where “tweet_to_json.py” is located and type the following command:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python tweet_to_json.py <span class="k">*</span>TWEET_ID<span class="k">*</span>
</code></pre></div></div>

<p>Where <em>TWEET ID</em> is the status ID of the tweet, for example 920729080491859968.</p>

<p>If everything goes well, two folders should have been created next to the tweet_to_json.py file: “Json files” and “images”. One will have the structures JSON file and the other will have the avatar picture of the user posted the tweet. Copy these files and paste them next to your .aep project and get ready for step two!
Step 2: importing JSON file in After Effects CC 2018</p>

<p>In step two we are going to get the files generated with our python script and import that data for display in After Effects. You can download my test AEP and JSON files if that helps you.</p>

<p>First of all we need to import our JSON file in the same way that would be done with any kind of footage.</p>

<p>Then we will create a text layer for every field that we want to import from the JSON file. In my example file we are using five fields: User display name, username, status text, number of retweets and number of likes (formerly favorites).</p>

<p>We need to write a bit of code on each text layer. This is easily done by Alt-clicking the “Source Text” property inside the Text options of the Text Layer.</p>

<p>Lets start with an easy example: User display name. This text layer requires the following code:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">var username=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">footage</span><span class="p">(</span><span class="dl">"</span><span class="s2">tweet.json</span><span class="dl">"</span><span class="p">).</span><span class="nx">sourceText</span><span class="p">);</span>
<span class="nx">username</span><span class="p">.</span><span class="nx">user</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span>
</code></pre></div></div>

<p>The first line looks in your footage for a file called tweet.json and searches for the field “name” inside the field “user”. The second line prints the value. In order for this to work make sure that the json file that you have imported is called “tweet.json”, or to change the code accordingly to point to your imported json file.</p>

<p>The status text (the actual tweet) is a bit more complicated. The code is as follows:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">var status=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">footage</span><span class="p">(</span><span class="dl">"</span><span class="s2">tweet.json</span><span class="dl">"</span><span class="p">).</span><span class="nx">sourceText</span><span class="p">);</span>
<span class="nx">status</span><span class="p">.</span><span class="nx">full_text</span><span class="p">;</span>

<span class="nx">txt</span> <span class="o">=</span> <span class="nx">status</span><span class="p">.</span><span class="nx">full_text</span><span class="p">;</span>
<span class="nx">n</span> <span class="o">=</span> <span class="mi">35</span><span class="p">;</span>
<span class="nx">outStr</span> <span class="o">=</span> <span class="dl">""</span><span class="p">;</span>
<span class="nx">newLine</span> <span class="o">=</span> <span class="dl">""</span><span class="p">;</span>
<span class="nx">splt</span> <span class="o">=</span> <span class="nx">txt</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="dl">"</span><span class="s2"> </span><span class="dl">"</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">splt</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">if</span> <span class="p">((</span><span class="nx">newLine</span> <span class="o">+</span> <span class="dl">"</span><span class="s2"> </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">splt</span><span class="p">[</span><span class="nx">i</span><span class="p">]).</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="nx">n</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="nx">outStr</span> <span class="o">!=</span> <span class="dl">""</span><span class="p">)</span> <span class="nx">outStr</span> <span class="o">+=</span> <span class="dl">"</span><span class="se">\r</span><span class="dl">"</span><span class="p">;</span>
    <span class="nx">outStr</span> <span class="o">+=</span> <span class="nx">newLine</span><span class="p">;</span>
    <span class="nx">newLine</span> <span class="o">=</span> <span class="nx">splt</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="nx">newLine</span> <span class="o">!=</span> <span class="dl">""</span><span class="p">)</span> <span class="nx">newLine</span> <span class="o">+=</span> <span class="dl">"</span><span class="s2"> </span><span class="dl">"</span><span class="p">;</span>
    <span class="nx">newLine</span> <span class="o">+=</span> <span class="nx">splt</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
  <span class="p">}</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">newLine</span> <span class="o">!=</span> <span class="dl">""</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">if</span> <span class="p">(</span><span class="nx">outStr</span> <span class="o">!=</span> <span class="dl">""</span><span class="p">)</span> <span class="nx">outStr</span> <span class="o">+=</span> <span class="dl">"</span><span class="se">\r</span><span class="dl">"</span><span class="p">;</span>
  <span class="nx">outStr</span> <span class="o">+=</span> <span class="nx">newLine</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">outStr</span><span class="p">;</span>
</code></pre></div></div>

<p>The first two lines do the same as in the previous layer. The rest of the code makes sure that the tweet is separated into different lines after a set amount of characters. The specific amount before the line break can be set on line 4, defined as “n”.</p>

<p>The rest of the layers are really similar to the first one we looked at:</p>

<p>Username:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">var screenname=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">footage</span><span class="p">(</span><span class="dl">"</span><span class="s2">tweet.json</span><span class="dl">"</span><span class="p">).</span><span class="nx">sourceText</span><span class="p">);</span>
<span class="dl">"</span><span class="s2">@</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">screenname</span><span class="p">.</span><span class="nx">user</span><span class="p">.</span><span class="nx">screen_name</span><span class="p">;</span>
</code></pre></div></div>

<p>Number of retweets:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">var retweets=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">footage</span><span class="p">(</span><span class="dl">"</span><span class="s2">tweet.json</span><span class="dl">"</span><span class="p">).</span><span class="nx">sourceText</span><span class="p">);</span>
<span class="nx">retweets</span><span class="p">.</span><span class="nx">retweet_count</span><span class="p">;</span>
</code></pre></div></div>

<p>Number of favorites:</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">var me_gusta=</span><span class="dl">"</span> <span class="o">+</span> <span class="nx">footage</span><span class="p">(</span><span class="dl">"</span><span class="s2">tweet.json</span><span class="dl">"</span><span class="p">).</span><span class="nx">sourceText</span><span class="p">);</span>
<span class="nx">me_gusta</span><span class="p">.</span><span class="nx">favorite_count</span><span class="p">;</span>
</code></pre></div></div>

<p>Finally, in my example files the user image is also used, on display next to the username.</p>]]></content><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><category term="video" /><category term="media" /><summary type="html"><![CDATA[The aim of this tutorial is to demonstrate how you can streamline the creation of motion graphics thanks to the new JSON compatibility features in Adobe After Effects CC 2018 using Twitters API and Python. It will be divided in two parts, the first one focused on how to get the data from a tweet to a JSON file, and a second one on how to import this data and use it in an AE composition. If you already have a JSON file (it can be a tweet or any other kind of structured data) feel free to skip the first step. Step 1: Saving a tweet as a JSON file]]></summary></entry><entry><title type="html">How to change After Effects CC 2017 Keyboard Shortcuts when using non english keyboard layout</title><link href="https://klise.now.sh/how-to-change-after-effects-cc-2017-keyboard-shortcuts-when-using-non-english-keyboard-layout/" rel="alternate" type="text/html" title="How to change After Effects CC 2017 Keyboard Shortcuts when using non english keyboard layout" /><published>2017-10-04T22:29:20-04:00</published><updated>2017-10-04T22:29:20-04:00</updated><id>https://klise.now.sh/how-to-change-after-effects-cc-2017-keyboard-shortcuts-when-using-non-english-keyboard-layout</id><content type="html" xml:base="https://klise.now.sh/how-to-change-after-effects-cc-2017-keyboard-shortcuts-when-using-non-english-keyboard-layout/"><![CDATA[<p>Recently Adobe decided to improve the keyboard shortcurt interface for Premiere Pro. It was a long overdue change and very well received. But for some reason they have forgotten about After Effects users, as we still have to tinker with TXT edits and obscure key codes to make everything work. Even more so for users that happen to have After Effects in English but use another type of keyboard, for example one with European ISO Layout.</p>

<p>In the following example I will show you how to change the Trim In and Trim Out shortcuts, as well as Zoom In and Zoom Out. These are completely broken if the user has the software in English but a Spanish layout keyboard.</p>

<p>First of all open After Effects and go to Edit -&gt; Preferences -&gt; General and then click on Reveal preferences in Explorer.</p>

<p>Once in that folder you have to edit the file Adobe After Effects 14.1 Win en_US Shortcuts.txt. I like using Notepad++ (free software).</p>

<p>The easiest way to solve the Trim In and Out problem is to search the txt file for the following text: “TimeTrimIn” and assign our desired shortcut. In my case I like using “(Alt+I)” for “TimeTrimIn” and “(Alt+O)” for “TimeTrimOut”. Note that these shortcuts are defined in different sections of the txt file, so they need to be replaced in different lines.</p>

<p>To fix the zoom behavior you have to search for [“CCompCompCmd”]. In that section you will find “CompTimeZoomIn” and “CompTimeZoomOut”. These have to be set to “(Plus)” and “(-)” respectively.</p>

<p>To make the changes effective you have to save the file and restart After Effects. Be specially careful if you use the Creative Cloud auto-update for preferences, as it might overwrite your preference files and roll back the files!</p>

<p>Make sure to check my new post on how to import json data in after effects using python</p>]]></content><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><category term="video" /><category term="media" /><summary type="html"><![CDATA[Recently Adobe decided to improve the keyboard shortcurt interface for Premiere Pro. It was a long overdue change and very well received. But for some reason they have forgotten about After Effects users, as we still have to tinker with TXT edits and obscure key codes to make everything work. Even more so for users that happen to have After Effects in English but use another type of keyboard, for example one with European ISO Layout.]]></summary></entry><entry><title type="html">How to convert XSplit flv files to mp4</title><link href="https://klise.now.sh/how-to-convert-xsplit-flv-files-to-mp4/" rel="alternate" type="text/html" title="How to convert XSplit flv files to mp4" /><published>2017-09-04T22:29:20-04:00</published><updated>2017-09-04T22:29:20-04:00</updated><id>https://klise.now.sh/how-to-convert-xsplit-flv-files-to-mp4</id><content type="html" xml:base="https://klise.now.sh/how-to-convert-xsplit-flv-files-to-mp4/"><![CDATA[<p>Recently I have been recording some of my gaming sessions (specially DayZ), livestreaming them through Twitch.tv using XSplit. I wanted to edit some videos in Premiere, but found out that the FLV files that are created locally use a strange audio codec, making it impossible to edit them in Premiere, Sony Vegas or any other NLE I know of.</p>

<p>The next step for my was trying to figure out how to convert them. I tried using different converters I found on the net, but always ended up with audio problems, wether it was sync issues or jitter…Until I found XMedia Recode. This software, which is totally free, will convert your XSplit FLV files to H264, allowing you to later edit them wherever you want.</p>

<p>Once installed, all you have to do is:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>click Open File
select your FLV
then in Format tab pick H.264
in video tab select your preferred settings.
Finally click on the green + sign and on Encode.
</code></pre></div></div>

<p>You will have a hassle-free MP4 file to work with.</p>]]></content><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><category term="video" /><category term="media" /><summary type="html"><![CDATA[Recently I have been recording some of my gaming sessions (specially DayZ), livestreaming them through Twitch.tv using XSplit. I wanted to edit some videos in Premiere, but found out that the FLV files that are created locally use a strange audio codec, making it impossible to edit them in Premiere, Sony Vegas or any other NLE I know of.]]></summary></entry><entry><title type="html">From Canon Rebel T2i to Panasonic GH3</title><link href="https://klise.now.sh/from-canon-rebel-t2i-to-panasonic-gh3/" rel="alternate" type="text/html" title="From Canon Rebel T2i to Panasonic GH3" /><published>2013-08-30T22:29:20-04:00</published><updated>2013-08-30T22:29:20-04:00</updated><id>https://klise.now.sh/from-canon-rebel-t2i-to-panasonic-gh3</id><content type="html" xml:base="https://klise.now.sh/from-canon-rebel-t2i-to-panasonic-gh3/"><![CDATA[<p>Finally, two years after buying my first DSLR, it’s time for a change. I will be selling my Canon Rebel T2i (named 550D in Spain) and replacing it with a mirrorless Panasonic GH3 with a 12-35mm f2.8 lens.</p>

<p>The decision was really not that hard, seeing that after hacking the GH2, Panasonic decided that they wanted to do the same thing the hackers did, but themselves for the new model. Being video my primary use for the camera, it made sense to go for a more lightweight, video-oriented approach.</p>

<p>What do I like about it?</p>

<p>· All-INTRA: Up to 72Mbps datarate, unprecedented quality compared to other DSLRS, allows for more flexibility in post. Sure, it’s not a BlackMagic Cinema Camera that shoots RAW, but it will do for me.
· 1080p 50fps: My rebel T2i only did this in 720p mode, so now we can do some great slow-mo shots on Full-HD.
· Audio monitoring: Sure Magic Lantern allows you to see audio peaking in the OSD, but having a standard 3.5mm headphone jack is so handy. I had hacked my Rebel T2i’s RCA cable to monitor audio, but this way is just completely hassle-free.
· HDMI Clean Output: Again, one of the features that Canon cameras had with ML (I think) is available out of the box in the GH3. Need something better than 4:2:0? Just throw an Atomos Ninja in the mix and enjoy 4:2:2 for keying and VFX.</p>

<p>Overall I think it’s a great addition to my toolset, I’ll try to pick it up tomorrow morning or early next week and give it a try 🙂</p>]]></content><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><category term="video" /><category term="media" /><summary type="html"><![CDATA[Finally, two years after buying my first DSLR, it’s time for a change. I will be selling my Canon Rebel T2i (named 550D in Spain) and replacing it with a mirrorless Panasonic GH3 with a 12-35mm f2.8 lens.]]></summary></entry><entry><title type="html">Cinema 4D R14 and Camera Mapping</title><link href="https://klise.now.sh/cinema-4d-r14-and-camera-mapping/" rel="alternate" type="text/html" title="Cinema 4D R14 and Camera Mapping" /><published>2013-01-12T21:29:20-05:00</published><updated>2013-01-12T21:29:20-05:00</updated><id>https://klise.now.sh/cinema-4d-r14-and-camera-mapping</id><content type="html" xml:base="https://klise.now.sh/cinema-4d-r14-and-camera-mapping/"><![CDATA[<p>So recently i’ve been trying to create high quality renders in Cinema 4D, integrating 3D objects into real environments. Instead of using camera tracking, i gave camera mapping a try, using an old picture i shot in LA two years ago. Solving the camera was really easy thanks to the Camera Calibration tool in Cinema 4D R14 (and GSG of course). Once solved, building the geometry accordingly was easy, bearing in mind that my photo was easy to replicate and didn’t have many tough spots. Some of it had to be redone in Photoshop, and what was really a challenge was creating the grass that had to stand out along the the curb.</p>

<p>Fortunately, using an alpha channel did the trick, and it certainly helps to sell the effect and add an interesting parallax to the picture. Next up was modeling and texturing a mailbox, which is completely another topic. Anyway, fast forward to the next day and i had my geometry in place and my camera moving around my 2D-3D picture.</p>

<p>But obviously, without having any reference whatsoever on the original lighting of the scene, there was no way that i could make the mailbox completely realistic. Yeah, it can be faked somehow and adjusted in composition to make it look like it was there, but the results are not as good as what you could get with a light probe.</p>

<p>So that will be my next step, getting a nice “gazing globe” to take HDRI and use them as environment maps.</p>]]></content><author><name>Arturo Bracero</name><email>artubr@gmail.com</email></author><category term="video" /><category term="media" /><summary type="html"><![CDATA[So recently i’ve been trying to create high quality renders in Cinema 4D, integrating 3D objects into real environments. Instead of using camera tracking, i gave camera mapping a try, using an old picture i shot in LA two years ago. Solving the camera was really easy thanks to the Camera Calibration tool in Cinema 4D R14 (and GSG of course). Once solved, building the geometry accordingly was easy, bearing in mind that my photo was easy to replicate and didn’t have many tough spots. Some of it had to be redone in Photoshop, and what was really a challenge was creating the grass that had to stand out along the the curb.]]></summary></entry></feed>