<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Renaun Erickson</title> <atom:link href="http://renaun.com/blog/feed/" rel="self" type="application/rss+xml" /><link>http://renaun.com/blog</link> <description>My ideas on the web and mobile application/game technologies</description> <lastBuildDate>Fri, 24 Oct 2014 16:08:24 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>Adobe Creative SDK Update v0.5.2062</title><link>http://renaun.com/blog/2014/10/adobe-creative-sdk-update-v0-5-2062/</link> <comments>http://renaun.com/blog/2014/10/adobe-creative-sdk-update-v0-5-2062/#comments</comments> <pubDate>Fri, 24 Oct 2014 16:08:24 +0000</pubDate> <dc:creator>Renaun Erickson</dc:creator> <category><![CDATA[Blog]]></category><guid isPermaLink="false">http://renaun.com/blog/?p=2400</guid> <description><![CDATA[<p>In the latest update to the Creative SDK released this week there are a few changes to look at. First the SDK now requires Xcode 6. There is also updates to various iOS 8 issues that are fixed now. The AdobeUXAssetBrowser class has a new method for launching the asset browser component. It has the [...]</p><p>The post <a href="http://renaun.com/blog/2014/10/adobe-creative-sdk-update-v0-5-2062/">Adobe Creative SDK Update v0.5.2062</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></description> <content:encoded><![CDATA[<p>In the latest update to the Creative SDK released this week there are a few changes to look at. First the SDK now requires Xcode 6. There is also updates to various iOS 8 issues that are fixed now.</p><p>The AdobeUXAssetBrowser class has a new method for launching the asset browser component. It has the method:</p><p><code class="codecolorer objc mac-classic"><span class="objc"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>popupFileBrowserWithParent<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>parent &nbsp; <br /> &nbsp; &nbsp; &nbsp;configuration<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>configuration <br /> &nbsp; &nbsp; &nbsp;onSuccess<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>successBlock <br /> &nbsp; &nbsp; &nbsp;onError<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">id</span><span style="color: #002200;">&#41;</span>errorBlock</span></code></p><p>For no filters on mime types (png, jpeg, psd, ai, etc&#8230;) or data sources (Creative Cloud files, Brushes, etc&#8230;) just pass in nil and nothing will be filtered. To filter the <code>AdobeUXAssetBrowser</code> you would create an instance of the <code>AdobeUXAssetBrowserConfiguration</code> class and add the appropriate filters to the properties on that class.</p><p>Here is a quick look at the AdobeAssetDataSource options for an idea of how it works:<br /> <a href="http://renaun.com/blog/wp-content/uploads/2014/10/adobeassetdatasources.jpg"><img src="http://renaun.com/blog/wp-content/uploads/2014/10/adobeassetdatasources.jpg" alt="AdobeAssetDataSource" class="size-large wp-image-2401" /></a></p><p>Here is some sample code for configuring the <code>AdobeUXAssetBrowser</code>.</p><p><code class="codecolorer objc mac-classic"><span class="objc">AdobeUXAssetBrowserConfiguration <span style="color: #002200;">*</span>conf <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>AdobeUXAssetBrowserConfiguration alloc <span style="color: #002200;">&#93;</span> init<span style="color: #002200;">&#93;</span>;<br /> &nbsp; &nbsp; conf.dataSourceFilter <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span>AdobeAssetDataSourceFilter alloc <span style="color: #002200;">&#93;</span> initWithDataSources<span style="color: #002200;">:</span>@<span style="color: #002200;">&#91;</span>AdobeAssetDataSourceFiles<span style="color: #002200;">&#93;</span> filterType<span style="color: #002200;">:</span>AdobeAssetDataSourceFilterInclusive<span style="color: #002200;">&#93;</span>;</span></code></p><p>The code above sets the browser to only show files from the Creative Cloud files not other sources like <a href="https://itunes.apple.com/us/app/adobe-brush-cc-creative-brushes/id911158339">Adobe Brush CC</a> or <a href="http://www.adobe.com/products/draw.html">Adobe Illustrator Draw</a>.</p><p>Go grab the latest version of the Adobe Creative SDK at <a href="http://creativesdk.adobe.com">http://creativesdk.adobe.com</a>.</p><p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a></center></p><p>The post <a href="http://renaun.com/blog/2014/10/adobe-creative-sdk-update-v0-5-2062/">Adobe Creative SDK Update v0.5.2062</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></content:encoded> <wfw:commentRss>http://renaun.com/blog/2014/10/adobe-creative-sdk-update-v0-5-2062/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Adobe Creative SDK</title><link>http://renaun.com/blog/2014/10/adobe-creative-sdk/</link> <comments>http://renaun.com/blog/2014/10/adobe-creative-sdk/#comments</comments> <pubDate>Wed, 08 Oct 2014 00:46:07 +0000</pubDate> <dc:creator>Renaun Erickson</dc:creator> <category><![CDATA[Blog]]></category><guid isPermaLink="false">http://renaun.com/blog/?p=2379</guid> <description><![CDATA[<p>There has been a lot of announcements at Adobe MAX 2014. I have been busy working closely with the Adobe Creative SDK. I helped Threadless create their brand new Threadless Make iPad application that leverages the Adobe Creative SDK. The Creative SDK was made publicly available just yesterday. There are a other applications that worked [...]</p><p>The post <a href="http://renaun.com/blog/2014/10/adobe-creative-sdk/">Adobe Creative SDK</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></description> <content:encoded><![CDATA[<p>There has been a lot of announcements at Adobe MAX 2014. I have been busy working closely with the Adobe Creative SDK. I helped <a href="http://threadless.com" target="_blank">Threadless</a> create their brand new <a href="https://itunes.apple.com/us/app/threadless-make/id921705289?ls=1&#038;mt=8" title="Threadless Make" target="_blank">Threadless Make iPad application</a> that leverages the Adobe Creative SDK. The Creative SDK was made publicly available just yesterday. There are a other applications that worked with the beta SDK and have launched in the App Store. Here are few of them:</p><p><a href="https://itunes.apple.com/us/app/flowboard-presentation-app/id630717527?mt=8" target="_blank">Flowboard</a><br /> <a href="https://itunes.apple.com/us/app/fabrika-app/id408289884" target="_blank">Fabrika App</a><br /> <a href="https://itunes.apple.com/us/app/concepts-smarter-sketching/id560586497?mt=8" target="_blank">Concepts: Smarter Sketching</a><br /> <a href="https://itunes.apple.com/us/app/rhonna-designs/id667819594?mt=8" target="_blank">Rhonna Designs</a><br /> <a href="https://itunes.apple.com/us/app/storehouse-visual-storytelling/id791297521?mt=8" target="_blank">Storehouse &#8211; Visual Storytelling</a><br /> <a href="https://itunes.apple.com/us/app/snapwire-sell-your-authentic/id725106358?mt=8" target="_blank">Snapwire</a></p><h3>What is the Creative SDK?</h3><p>The Creative SDK is a rich set of iOS components creating a new era of connected creativity and a seamless workflow between your mobile applications and Adobe Tools and Creative Cloud services, reaching millions of new users.</p><h3>Hows does a developer get the Creative SDK?</h3><p>A developer can get the Creative SDK by going to <a href="http://creativesdk.com" target="_blank">http://creativesdk.com</a> and signing in with their Adobe ID then download the iOS frameworks.</p><p><a href="http://renaun.com/blog/wp-content/uploads/2014/10/sdkdownloads.png"><img src="http://renaun.com/blog/wp-content/uploads/2014/10/sdkdownloads-300x166.png" alt="sdkdownloads" width="300" height="166" class="alignleft size-medium wp-image-2381" /></a></p><p>You see in the picture above what the download page looks like. The main frameworks of the Creative SDK are in the iOS section under &#8220;Download iOS&#8221;. The &#8220;Device Extensions&#8221; under that button is are classes to support 3rd party input devices (Wacom, Fifty Three) under one API and UI experience in connection with <a href="http://www.adobe.com/products/ink-and-slide.html" target="_blank">Adobe&#8217;s Ink and Slide</a> hardware. The Android section is an early build of the SDK for Android. And finally the far right section is a sample application that can be downloaded, hooked up to the Creative SDK and run to see it all work, full of code samples to started from.</p><h3>How easy is it to use?</h3><p>The Creative SDK is made up of components and low level API calls. It is still in the beginning it will continue to grow to support mobile, desktop and web. But for now the first version is focused on iOS with pre-built components to make it easy to integrate with. Here is a quick code sample and the result of what you get in objective-C:</p><div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;height:300px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AdobeUXAssetBrowserOptions testOptions <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br /> testOptions <span style="color: #339933;">|=</span> EnablePSDLayerExtraction<span style="color: #339933;">;</span><br /> <br /> <span style="color: #006600; font-style: italic;">// &nbsp; &nbsp;testOptions |= EnableMultiSelect;</span><br /> <span style="color: #006600; font-style: italic;">// &nbsp; &nbsp;testOptions |= ShowMultiSelectOnPopup;</span><br /> <span style="color: #006600; font-style: italic;">// &nbsp; &nbsp;testOptions |= ShowGridViewOnPopup;</span><br /> <span style="color: #006600; font-style: italic;">// &nbsp; &nbsp;testOptions |= SortAlphabeticallyOnPopup;</span><br /> <br /> <br /> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#91;</span>AdobeUXAssetBrowser sharedBrowser<span style="color: #009900;">&#93;</span> popupFileBrowserWithParent<span style="color: #339933;">:</span> self<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; withOptions<span style="color: #339933;">:</span> testOptions<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;withFilter<span style="color: #339933;">:</span> nil<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;withFilterType<span style="color: #339933;">:</span> AdobeUXAssetBrowserFilterTypeUnspecified<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onSuccess<span style="color: #339933;">:</span> <span style="color: #339933;">^</span><span style="color: #009900;">&#40;</span>NSArray <span style="color: #339933;">*</span>itemSelections<span style="color: #009900;">&#41;</span><br /> &nbsp;<span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp;AdobeSelectionAsset <span style="color: #339933;">*</span>itemSelection <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>itemSelections lastObject<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; &nbsp;AdobeAsset<span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">item</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>AdobeAsset <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>itemSelection.<span style="color: #660066;">selectedItem</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; &nbsp;<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> IsAdobeAssetFile<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><br /> &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AdobeAssetFile<span style="color: #339933;">*</span> file <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>AdobeAssetFile <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#91;</span>file getRenditionWithType<span style="color: #339933;">:</span> AdobeAssetFileRenditionTypePNG<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;withSize<span style="color: #339933;">:</span> CGSizeMake<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1200</span><span style="color: #339933;">,</span><span style="color: #CC0000;">1200</span><span style="color: #009900;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;withPriority<span style="color: #339933;">:</span> NSOperationQueuePriorityNormal<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onProgress<span style="color: #339933;">:</span> <span style="color: #339933;">^</span><span style="color: #009900;">&#40;</span>double fractionCompleted<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onCompletion<span style="color: #339933;">:</span> <span style="color: #339933;">^</span><span style="color: #009900;">&#40;</span>NSData <span style="color: #339933;">*</span>data<span style="color: #339933;">,</span> BOOL fromCache<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #006600; font-style: italic;">// [UIImage imageWithData: data] withName:file.href]; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;onCancellation<span style="color: #339933;">:^</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">onError</span><span style="color: #339933;">:^</span><span style="color: #009900;">&#40;</span>NSError <span style="color: #339933;">*</span>error<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br /> &nbsp;<span style="color: #009900;">&#125;</span><br /> &nbsp; &nbsp; <span style="color: #000066;">onError</span><span style="color: #339933;">:^</span><span style="color: #009900;">&#40;</span>NSError <span style="color: #339933;">*</span>error<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></div></div><p>The code above launches the file browser component which looks like the following image in an iPad application:</p><p><a href="http://renaun.com/blog/wp-content/uploads/2014/10/filebrowser.png"><img src="http://renaun.com/blog/wp-content/uploads/2014/10/filebrowser-300x225.png" alt="filebrowser" width="300" height="225" class="size-medium wp-image-2395" /></a></p><h3>Conclusion</h3><p>Go check out the existing applications that have integrated the Creative SDK. Then download the Creative SDK for yourself and get started leveraging the power of the Adobe Creative Cloud.</p><p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a></center></p><p>The post <a href="http://renaun.com/blog/2014/10/adobe-creative-sdk/">Adobe Creative SDK</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></content:encoded> <wfw:commentRss>http://renaun.com/blog/2014/10/adobe-creative-sdk/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Live Texture Updater Plugin for Photoshop CC</title><link>http://renaun.com/blog/2013/09/live-texture-updater-plugin-for-photoshop-cc/</link> <comments>http://renaun.com/blog/2013/09/live-texture-updater-plugin-for-photoshop-cc/#comments</comments> <pubDate>Thu, 26 Sep 2013 18:38:33 +0000</pubDate> <dc:creator>Renaun Erickson</dc:creator> <category><![CDATA[Blog]]></category><guid isPermaLink="false">http://renaun.com/blog/?p=2362</guid> <description><![CDATA[<p>Photoshop CC has a new Node.js based feature called Adobe Generator for Photoshop CC. What this means for developers is they can build plugins with Node.js libraries and JavaScript. I showed off how to do live texture updating of a three.js app using the standard Image Assets Adobe Generator for Photoshop CC plugin here. In [...]</p><p>The post <a href="http://renaun.com/blog/2013/09/live-texture-updater-plugin-for-photoshop-cc/">Live Texture Updater Plugin for Photoshop CC</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></description> <content:encoded><![CDATA[<p><a href="http://renaun.com/blog/wp-content/uploads/2013/09/pixijsltup.png"><img src="http://renaun.com/blog/wp-content/uploads/2013/09/pixijsltup.png" alt="Pixi.js with Live Texture Uploader" width="333" height="362" class="alignleft size-full wp-image-2365" /></a>Photoshop CC has a new Node.js based feature called Adobe Generator for Photoshop CC. What this means for developers is they can build plugins with Node.js libraries and JavaScript. I showed off how to do live texture updating of a three.js app using the standard Image Assets Adobe Generator for Photoshop CC plugin <a href="http://renaun.com/blog/2013/09/live-three-js-texture-updating-with-photoshop-cc/">here</a>.</p><p>In this blog post and video I want to show off how a custom plugin called, Live Texture Updater, lets you have more control of where the outputted images are from the PSD file as well as implementing WebSockets for update notification (no polling of images).</p><p>For example the default Image Assets plugin that I modified pushed all assets into a folder with the name of the PSD file + &#8220;-assets&#8221;. Also layers could not have certain characters like &#8220;/&#8221; in them. What I did was extend the plugin to allow the designer to set where to output the assets by looking for a top most empty layer with the name of &#8220;root=./&#8221; where the path could be relative or full path. This root path is then used instead of the PSD filename + &#8220;-assets&#8221;.</p><p>The other feature I added was the ability to add folders in the layer or group names that you are exporting. So you could have &#8220;images/enemy/ship1.png&#8221; and &#8220;images/ui/panel.png&#8221; in the same PSD and they would be put in the root + layer/group name folder. This new layer/group name is also what is sent through the WebSocket logic to the client to tell it what has changed to make the live texture update.</p><p>I used <a href="http://www.pixijs.com/">Pixi.js</a> in the example below but the plugin just send generic image filename data over WebSockets and could easily be used in other frameworks that want to have live texture updating. There is a HTML5 game framework called <a href="http://phaser.io/">Phaser</a> that uses Pixi.js so you could use the example code below to do live design of your textures in your Phaser games.</p><h3>What do you need?</h3><p><a href="https://github.com/renaun/WorkflowExamples/tree/master/live-texture-updater" title="Live Texture Updater plugin">Live Texture Updater Adobe Generator for Photoshop CC plugin</a><br /> <a href="https://www.adobe.com/products/photoshop.html" title="Adobe Photoshop CC">Adobe Photoshop CC</a><br /> <a href="https://github.com/renaun/WorkflowExamples/tree/master/PhotoshopCCGeneratorPixiJS">Sample Pixi.js Application</a></p><h3>How to Use</h3><ul><li>Grab the code off <a href="https://github.com/renaun/WorkflowExamples">https://github.com/renaun/WorkflowExamples</a></li><li>Copy the live-texture-updater folder into your /Applications/Adobe Photoshop CC/Plugins/Generator folder (create the Generator folder if it does not exist).</li><li>Restart Adobe Photoshop CC if it was open.</li><li>Open up the GameAssets.psd in the PhotoshopCCGeneratorPixiJS folder.</li><li>Go to File -> Generate and make sure the Live Texture Updater plugin is checked.</li><li>Create a webserver (I use <a href="https://github.com/SimbCo/httpster">httpster</a>) on the PhotoshopCCGeneratorPixiJS folder and run index.html page.</li><li>Now make changes to the layers or group in the GameAssets.psd and watch the texture update in real time.</li></ul><p>Here is a video showing off the plugin and Pixi.js app running on the desktop:<br /> <iframe width="480" height="360" src="//www.youtube.com/embed/adVKCOjR5W8?rel=0" frameborder="0" allowfullscreen></iframe></p><p>Here is a video showing off the plugin and Pixi.js app running on the a mobile device:<br /> <iframe width="480" height="360" src="//www.youtube.com/embed/43xoeqe0MZA?rel=0" frameborder="0" allowfullscreen></iframe></p><p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a></center></p><p>The post <a href="http://renaun.com/blog/2013/09/live-texture-updater-plugin-for-photoshop-cc/">Live Texture Updater Plugin for Photoshop CC</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></content:encoded> <wfw:commentRss>http://renaun.com/blog/2013/09/live-texture-updater-plugin-for-photoshop-cc/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Live three.js Texture Updating with Photoshop CC</title><link>http://renaun.com/blog/2013/09/live-three-js-texture-updating-with-photoshop-cc/</link> <comments>http://renaun.com/blog/2013/09/live-three-js-texture-updating-with-photoshop-cc/#comments</comments> <pubDate>Mon, 16 Sep 2013 20:46:39 +0000</pubDate> <dc:creator>Renaun Erickson</dc:creator> <category><![CDATA[Blog]]></category><guid isPermaLink="false">http://renaun.com/blog/?p=2340</guid> <description><![CDATA[<p>Check out the video below that explains how to live update textures in your three.js application using Adobe Generator for Photoshop CC. The source code for the example shown in the video is available at: https://github.com/renaun/WorkflowExamples/tree/master/PhotoshopCCGeneratorThreeJS If you are wondering how I get three.js to update its texture check out this JavaScript code: /** &#160;Author: [...]</p><p>The post <a href="http://renaun.com/blog/2013/09/live-three-js-texture-updating-with-photoshop-cc/">Live three.js Texture Updating with Photoshop CC</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></description> <content:encoded><![CDATA[<p><a href="http://renaun.com/blog/wp-content/uploads/2013/09/ltup.jpg"><img src="http://renaun.com/blog/wp-content/uploads/2013/09/ltup.jpg" alt="Live Texture Updating in three.js" width="300" height="271" class="aligncenter size-full wp-image-2349" /></a>Check out the video below that explains how to live update textures in your three.js application using Adobe Generator for Photoshop CC. The source code for the example shown in the video is available at:</p><p><a href="https://github.com/renaun/WorkflowExamples/tree/master/PhotoshopCCGeneratorThreeJS">https://github.com/renaun/WorkflowExamples/tree/master/PhotoshopCCGeneratorThreeJS</a></p><p><iframe width="480" height="360" src="//www.youtube.com/embed/sZBpz8m19SE?rel=0" frameborder="0" allowfullscreen></iframe></p><p>If you are wondering how I get three.js to update its texture check out this JavaScript code:</p><div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;height:300px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #006600; font-style: italic;">/**<br /> &nbsp;Author: Renaun Erickson @renaun http://renaun.com<br /> &nbsp;Live three.js Texture Update Plugin<br /> <br /> &nbsp;Meant for development of designing textures in connection with<br /> &nbsp;Photoshop CC Generator feature.<br /> <br /> &nbsp;You will have to point your assets urls to the folder generated by<br /> &nbsp;Photoshop CC Generator.<br /> <br /> &nbsp;Usage:<br /> &nbsp; &nbsp; &nbsp; include renaun.three.ltup.js after three library<br /> <br /> &nbsp; &nbsp; &nbsp; // After you instantiate your threejs renderer add this code<br /> &nbsp; &nbsp; &nbsp; renderer.addPostPlugin(new RENAUN.LiveTextureUpdatePlugin());<br /> **/</span><br /> <span style="color: #003366; font-weight: bold;">var</span> RENAUN <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; cacheLiveTextureUpdates<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br /> &nbsp; &nbsp; updateFrameRate<span style="color: #339933;">:</span> <span style="color: #CC0000;">30</span><br /> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; <br /> THREE.<span style="color: #660066;">ImageUtils</span>.<span style="color: #660066;">loadTexture</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span> url<span style="color: #339933;">,</span> mapping<span style="color: #339933;">,</span> <span style="color: #000066;">onLoad</span><span style="color: #339933;">,</span> <span style="color: #000066;">onError</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br /> <br /> &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> loader <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">ImageLoader</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; loader.<span style="color: #660066;">crossOrigin</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">crossOrigin</span><span style="color: #339933;">;</span><br /> <br /> &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> texture<span style="color: #339933;">;</span><br /> &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>RENAUN.<span style="color: #660066;">cacheLiveTextureUpdates</span><span style="color: #009900;">&#91;</span>url<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><br /> &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; texture <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">Texture</span><span style="color: #009900;">&#40;</span> undefined<span style="color: #339933;">,</span> mapping <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; RENAUN.<span style="color: #660066;">cacheLiveTextureUpdates</span><span style="color: #009900;">&#91;</span>url<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>size<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> texture<span style="color: #339933;">:</span> texture<span style="color: #339933;">,</span> url<span style="color: #339933;">:</span> url <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br /> &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">else</span><br /> &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; texture <span style="color: #339933;">=</span> RENAUN.<span style="color: #660066;">cacheLiveTextureUpdates</span><span style="color: #009900;">&#91;</span>url<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">texture</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br /> &nbsp; &nbsp; <br /> &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> image <span style="color: #339933;">=</span> loader.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span> url<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; texture.<span style="color: #660066;">needsUpdate</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span><br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066;">onLoad</span> <span style="color: #009900;">&#41;</span> <span style="color: #000066;">onLoad</span><span style="color: #009900;">&#40;</span> texture <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br /> <br /> &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; texture.<span style="color: #660066;">image</span> <span style="color: #339933;">=</span> image<span style="color: #339933;">;</span><br /> &nbsp; &nbsp; texture.<span style="color: #660066;">sourceFile</span> <span style="color: #339933;">=</span> url<span style="color: #339933;">;</span><br /> <br /> &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> texture<span style="color: #339933;">;</span><br /> <span style="color: #009900;">&#125;</span><br /> <br /> RENAUN.<span style="color: #660066;">LiveTextureUpdatePlugin</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; <br /> &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> count <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; <br /> &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">init</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span> renderer <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span><br /> &nbsp; &nbsp; <br /> &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">render</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span> scene<span style="color: #339933;">,</span> camera<span style="color: #339933;">,</span> viewportWidth<span style="color: #339933;">,</span> viewportHeight <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; count<span style="color: #339933;">++;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>count <span style="color: #339933;">%</span> RENAUN.<span style="color: #660066;">updateFrameRate</span> <span style="color: #339933;">!==</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> key <span style="color: #000066; font-weight: bold;">in</span> RENAUN.<span style="color: #660066;">cacheLiveTextureUpdates</span><span style="color: #009900;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; THREE.<span style="color: #660066;">ImageUtils</span>.<span style="color: #660066;">loadTexture</span><span style="color: #009900;">&#40;</span>key<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>count <span style="color: #339933;">&gt;</span> <span style="color: #CC0000;">300000000</span><span style="color: #009900;">&#41;</span><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; count <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br /> <span style="color: #009900;">&#125;</span></div></div><p>To use the live texture update plugin all you need to do in your three.js application is add this:</p><div class="codecolorer-container javascript mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> renderer <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> THREE.<span style="color: #660066;">WebGLRenderer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br /> &nbsp; &nbsp; &nbsp; renderer.<span style="color: #660066;">addPostPlugin</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> RENAUN.<span style="color: #660066;">LiveTextureUpdatePlugin</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Added for Live Texture Updates</span></div></div><p>The constant updating of the actual texture comes from the Adobe Generator for Photoshop CC. The new &#8220;Image Assets&#8221; generator plugin constant updates Photoshop folders or layers with a .jpg/.png suffix. If you want to learn about creating your own Photoshop CC generator plugins here are some links:</p><p><a href="http://www.leebrimelow.com/introduction-to-photoshop-generator/">Intro to Photoshop Generator by Lee Brimelow</a><br /> <a href="http://tomkrcha.com/?p=3896">Script your first Adobe Generator Plugin</a></p><p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a></center></p><p>The post <a href="http://renaun.com/blog/2013/09/live-three-js-texture-updating-with-photoshop-cc/">Live three.js Texture Updating with Photoshop CC</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></content:encoded> <wfw:commentRss>http://renaun.com/blog/2013/09/live-three-js-texture-updating-with-photoshop-cc/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Cross Compiling your ActionScript Starling Games to WebGL and JavaScript</title><link>http://renaun.com/blog/2013/09/cross-compiling-your-actionscript-starling-games-to-webgl-and-javascript/</link> <comments>http://renaun.com/blog/2013/09/cross-compiling-your-actionscript-starling-games-to-webgl-and-javascript/#comments</comments> <pubDate>Thu, 12 Sep 2013 13:13:02 +0000</pubDate> <dc:creator>Renaun Erickson</dc:creator> <category><![CDATA[Blog]]></category><guid isPermaLink="false">http://renaun.com/blog/?p=2319</guid> <description><![CDATA[<p>Want to see it in action? Check out the demo here: http://renaun.com/html5/randoristarlingtest/hero.html Summary Soure Code: Your Code + Starling Source + KontikiJS (WebGL/HTML5 implementation of Flash API) + Randori Guice Framework Feed to Compiler: Randori Compiler Output: JavaScript version of your code. Why have an ActionScript 3 to JavaScript Workflow The short answer is to [...]</p><p>The post <a href="http://renaun.com/blog/2013/09/cross-compiling-your-actionscript-starling-games-to-webgl-and-javascript/">Cross Compiling your ActionScript Starling Games to WebGL and JavaScript</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></description> <content:encoded><![CDATA[<p>Want to see it in action? Check out the demo here:</p><p>http://renaun.com/html5/randoristarlingtest/hero.html</p><h3>Summary</h3><p><strong>Soure Code:</strong><br /> Your Code +<br /> Starling Source +<br /> KontikiJS (WebGL/HTML5 implementation of Flash API) +<br /> Randori Guice Framework</p><p><strong>Feed to Compiler:</strong></p><p>Randori Compiler</p><p><strong>Output:</strong></p><p>JavaScript version of your code.</p><h3>Why have an ActionScript 3 to JavaScript Workflow</h3><p>The short answer is to give ActionScript 3 developers who have built Starling games a path to JavaScript. Things change fast in the current landscape and there are many new platforms and languages that developers can choose to start a new project. At the least this provides a transition path for those developers building Starling based games.</p><p>This is not meant to be a general purpose solution for all AS3 code. In other words not all Flash APIs are implemented in KontikiJS. Having said that KontikiJS is an open source project and people can add any needed functionality.</p><h3>Simple Tutorial: Compiling the Example</h3><p>I have created a zip file that contains all the bits of code you need to try out compiling AS3 code into JavaScript. Download the following code:<br /> <a href="http://renaun.com/html5/HungryHeroJSExample.zip">http://renaun.com/html5/HungryHeroJSExample.zip</a>.</p><p>The zip file contains two folders: <strong>HungryHeroJS</strong> and <strong>common</strong>. The source files of the HungryHero AS3 game are in HungryHeroJS, whereas the “common” folder contains the four subfolders: KontikiJS, randori-compiler-latest, randori-sdk, and Starling-Framework. All of these are open source Github repos (list of repos at the end of the post) but I provided them here to have a known working set of code to start from.</p><p>Also note this is JavaScript so if things don&#8217;t work check the developer tools and make sure to also understand where WebGL and Web Audio is supported. I can&#8217;t help with browser limitations of WebGL and Web Audio.</p><p>Basic Steps</p><ul><li>Unzip HungryHeroJSExample.zip</li><li>Open up Terminal (Mac) or Cmd Prompt (Windows) and navigate to the unzipped HungryHeroJS folder</li><li>Run buildjs.sh (Mac) or buildjs.bat (Windows)</li><li>Start a web server in this folder, or copy the index.html, media folder, and js-randori folder to a webroot. I use <a href="https://github.com/SimbCo/httpster">httpster</a> (Node.js package) to start up a web server in this folder</li></ul><p>You should see some output in the console that looks like this:</p><div class="codecolorer-container text mac-classic" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Randori Compiler v0.2.6.5_renaun<br /> Compiling file: /Code/WebRelated/RandoriExamples/HungryHeroJS/js-randori/starling/filters/FragmentFilter.js<br /> Compiling file: /Code/WebRelated/RandoriExamples/HungryHeroJS/js-randori/starling/filters/DisplacementMapFilter.js<br /> Compiling file: /Code/WebRelated/RandoriExamples/HungryHeroJS/js-randori/flash/events/EventDispatcher.js<br /> Compiling file: /Code/WebRelated/RandoriExamples/HungryHeroJS/js-randori/flash/display/DisplayObject.js<br /> Compiling file: /Code/WebRelated/RandoriExamples/HungryHeroJS/js-randori/flash/display/InteractiveObject.js<br /> Compiling file: /Code/WebRelated/RandoriExamples/HungryHeroJS/js-randori/flash/display/DisplayObjectContainer.js</div></div><h3>Compiling Your Project</h3><p>The easiest method for now to try out your own code is to reuse some of the files in the HungryHeroJS folder. I would copy over the folder and rename it to your project. Remove the media folder and src folder. Then copy in your source files into a new &#8220;src&#8221; folder. Then change the index.html file to reference your main AS3 class file instead of &#8220;HungryHero&#8221;.</p><p>Things you will probably run into:</p><ul><li>You need all AS3 source files, no SWCs</li><li>Embed statements need another piece of metadata [Factory], see the com.hsharma.hungryHero.AssetsHungeryHero.as file for an example.</li></ul><h3>Github Repo Links</h3><p>KontikiJS &#8211; <a href="https://github.com/renaun/KontikiJS">https://github.com/renaun/KontikiJS</a><br /> Randori Compiler (my fork) &#8211; <a href="https://github.com/renaun/randori-compiler">https://github.com/renaun/randori-compiler</a> My changes will hopefully make it back into the main branch at some point.<br /> Randori SDK &#8211; <a href="https://github.com/RandoriAS/randori-sdk">https://github.com/RandoriAS/randori-sdk</a><br /> Starling-Framework (my fork with minor changes) &#8211; <a href="https://github.com/renaun/Starling-Framework">https://github.com/renaun/Starling-Framework</a><br /> HungryHero AS3 Sample Code &#8211; <a href="https://github.com/renaun/RandoriExamples/tree/master/HungryHeroJS">https://github.com/renaun/RandoriExamples/tree/master/HungryHeroJS</a></p><p><center>&copy; %FIRST Erickson - visit the <a href="http://www.renaun.com">&lt;renaun.com:flexblog text="{ ModelLocator.myThoughts }"/&gt;</a></center></p><p>The post <a href="http://renaun.com/blog/2013/09/cross-compiling-your-actionscript-starling-games-to-webgl-and-javascript/">Cross Compiling your ActionScript Starling Games to WebGL and JavaScript</a> appeared first on <a href="http://renaun.com/blog">Renaun Erickson</a>.</p>]]></content:encoded> <wfw:commentRss>http://renaun.com/blog/2013/09/cross-compiling-your-actionscript-starling-games-to-webgl-and-javascript/feed/</wfw:commentRss> <slash:comments>25</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using disk: basic
Object Caching 1204/1303 objects using disk: basic

 Served from: renaun.com @ 2026-04-21 02:16:34 by W3 Total Cache -->