Autodesk Research


  • Scaling HTML canvases for HiDPI screens

    I've been mocking up some UI additions for Dasher 360, today. A big chunk of my time was spent working out how to make flyouts work for vertical toolbars (something I'll address in a future post, if there's interest), but I've just been fighting another problem that's probably not really an issue for anyone using standard DPI (and non-"retina") screens. I've been drawing text to a standard HTML canvas and it's been really ugly. After some minutes of searching the web, I found out it was probably due to my MacBook Pro's retina display. Here's the code I integrated (from…


  • Overlaying a logo on the Forge viewer

    Today I was asked to add the ability to place a custom logo onto an instance of the Forge viewer (in my case for Dasher 360, of course). It seemed like an interesting one to share, as I'm sure others have the same requirement. There are probably lots of ways to solve this – for instance by adding the image with its own camera as an overlay inside the Forge viewer's 3D scene – but I decided to stick to something simple and have the browser overlay the image. There are a few changes needed for this to work. Firstly…


  • Implementing tooltips for individual points in a point cloud in the Forge viewer

    In the last post we talked about a recent optimization to Dasher 360, where we implemented a point cloud rather than individual SVG-based markers for our various sensors. As mentioned, last time, this was pretty straightforward to get working, but did add some complexity: rather than having seperate DOM-resident markers – which can easily have separate tooltips assigned – we now have a single object and need to be able to display tooltips when individual points in the cloud are hovered over. Here's the basic algorithm we used to determine when an individual sensor was being hovered over: Implement a…

  • My biggest session from this year's Autodesk University – and the only one that was recorded – has just gone live on the AU website. The segment I'm part of starts 53 minutes into the recording, while I personally start talking at around the 1 hour mark, going through to 1h10.     It was an interesting experience, talking to 1,000 people in a single session. While the lead up was a little stressful, I'm certainly happy I did it and – looking back at the recording – feel pretty good about managing to get the main points across reasonably…


  • An award for the Autodesk Research website

    Noble Studios, the contractor who helped develop AutodeskResearch.com, has won a Platinum MarCom Award for the project.     The site is indeed really cool: head on over if you haven't been there in a while. I have on my list of things to do – let's now call it a New Year's Resolution for 2017 – to start blogging over there, too. But there are plenty of interesting things to see even before that happens. 😉 Just for instance, check out some of the publications listed for the awesome Jos Stam, as well as some of his own entertaining…


  • Dasher 360: Give it a try!

    During the lead up to Autodesk University 2016, held a few weeks ago in Las Vegas, we made a number of key updates to Dasher 360. For those of you who haven't heard of it, Dasher 360 is Project Dasher re-imagined for the web using Autodesk's Forge platform. Here's a video that shows many of the enhancements we've made in recent months:     Aside from my AU2016 class on Dasher – and how we used Forge to implement it – Alex Tessier and I presented Dasher 360 during the Construction Launch Pad event in front of around 1,000 attendees.…


  • A busy day at EPFL

    Yesterday I was back at EPFL to visit a number of different people/teams. The main purpose of the trip was to meet with Klaus Schönenberger and Solomzi Makohliso from EssentialTech: an EPFL organization focused on reducing poverty by encouraging transfer of essential technology to developing nations. Examples of technology that has been transferred by the programme are a safe, affordable X-ray technology and a protective suit for working with Ebola patients. Image © 2016 EPFL Alain Herzog The delivery mechanism for the technology will either be an existing company or a startup, depending on the situation. The work EssentialTech is…


  • From tomorrow: meet Mimus at the Design Museum

    Madeline Gannon's exhibit – featuring Mimus, the industrial robot that reacts to (and even interacts with) visitors – opens tomorrow (November 24th, 2016) at the Design Museum in London. I mentioned Madeline's project in a recent post as I'd had the chance to interact with it at the Autodesk Boston BUILD space. There's also an interesting article discussing the project that's just been posted over on In the Fold. Here's a video describing the motivation behind the project in more depth:     If you're interested in how Mimus looks when not surrounded by glass, here's the video I recorded…


  • Toronto and Boston

    I arrived in Toronto on Sunday afternoon. Customs and immigration was extremely efficient – I just had to wait a while for my bag (one of these days I'll manage to do an 8-day trip with just a carry-on, but not this time). Getting into downtown Toronto was a breeze, too, with the UPExpress from Pearson Airport to Union Station (I'm guessing UP stands for Union-Pearson). It even has free wi-fi – a blessing for international roamers such as myself. Despite its size – and Toronto is *huge* – the downtown area is surprisingly walkable. I don't have a step…


  • Caching the results of long browser-based operations in Local Storage

    In the IoT-related (and Forge Viewer-based) prototype I'm spending most of my time working on, we have a long startup operation that instantiates a number of arrays of data with information derived from the BIM. This operation only really needs to be done once per model – every user will get exactly the same information from the model that's loaded in their own browser instance – but we were calculating it on every load of the model in the Forge Viewer. The question I'd like to look at in this post is the appropriate method for memoization of this function…