{"id":28379,"date":"2017-01-31T20:52:44","date_gmt":"2017-01-31T17:52:44","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=28379"},"modified":"2021-03-30T17:06:47","modified_gmt":"2021-03-30T14:06:47","slug":"tensorflow-for-manufacturers-building-a-3d-rendering-engine","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/","title":{"rendered":"TensorFlow for Manufacturers: Building a 3D Rendering Engine"},"content":{"rendered":"<p>Machine learning marches its way into a more and more broader pool of industries. The capabilities of TensorFlow are applied to an array of tasks from <a href=\"https:\/\/www.altoros.com\/blog\/how-tensorflow-can-detect-and-predict-wildfires\/\">predicting wildfires<\/a> to <a href=\"https:\/\/www.altoros.com\/blog\/analyzing-text-and-generating-content-with-neural-networks-and-tensorflow\/\">generating content<\/a>.<\/p>\n<p>At the recent <a href=\"https:\/\/www.meetup.com\/TensorFlow-San-Francisco\/events\/236403991\/\" target=\"_blank\" rel=\"noopener noreferrer\">meetup<\/a> in San Francisco, the attendees learnt what pitfalls may come up when developing a rendering image and how TensorFlow helps out. In addition, the speaker from Autodesk exemplified how the company employs TensorFlow to categorize 3D data, enable robots to assemble structures, etc.<\/p>\n<p><!--more-->&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#Using_geometric_representations_to_build_a_graphic_app\" >Using geometric representations to build a graphic app<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#How_Autodesk_makes_use_of_TensorFlow\" >How Autodesk makes use of TensorFlow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#About_the_experts\" >About the experts<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Using_geometric_representations_to_build_a_graphic_app\"><\/span>Using geometric representations to build a graphic app<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/andrew-taber-9481a97\" target=\"_blank\" rel=\"noopener noreferrer\">Andrew Taber<\/a>, a software engineer at Intact Solutions, demonstrated how to build graphic applications (e.g., a rendering engine) with TensorFlow and better understand structure and interconnection of neural networks.<\/p>\n<p>Starting with types of geometric representations, Andrew enumerated three of them, as well as pointing out its advantages and downsides:<\/p>\n<ol>\n<li style=\"margin-bottom: 10px;\"><strong>Polygonal<\/strong> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Polygon_mesh\" target=\"_blank\" rel=\"noopener noreferrer\">meshes<\/a>)<\/li>\n<li style=\"margin-bottom: 10px;\">\n<p><strong>Parametric<\/strong> (a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Boundary_representation\" target=\"_blank\" rel=\"noopener noreferrer\">boundary representation<\/a>), which represent geometry as an image of a function. It also <em>simplifies<\/em> the process of accessing local data by walking in any of the tree directions. Still, it is <em>hard<\/em> to query point membership or perform <a href=\"https:\/\/en.wikipedia.org\/wiki\/Boolean_algebra#Operations\" target=\"_blank\" rel=\"noopener noreferrer\">boolean operations<\/a>.<\/p>\n<p>For example, if you want to model a complex shape, it will require a lot of parametric patches, resulting in basically \u201cexploding memory cost for things like microstructures.\u201d<\/p>\n<\/li>\n<li style=\"margin-bottom: 10px;\">\n<p><strong>Implicit<\/strong> (a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Function_representationhttps:\/\/en.wikipedia.org\/wiki\/Function_representationhttps:\/\/en.wikipedia.org\/wiki\/Function_representation\" target=\"_blank\" rel=\"noopener noreferrer\">function representation<\/a>), which represents geometry as a kernel of a function. In contrast to parametric, with this type one can <em>easily run<\/em> boolean operations.<\/p>\n<p>For example, one can model arbitrary complexity with low storage overhead.<\/p>\n<\/li>\n<\/ol>\n<p>&nbsp;<br \/>\n<strong>Challenges to address<\/strong><\/p>\n<p>When building a rendering engine, one has to be aware of some pitfalls:<\/p>\n<ul>\n<li>It is time-consuming.<\/li>\n<li>User interaction is not intuitive.<\/li>\n<\/ul>\n<p>To help it out, Andrew made use of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Signed_distance_function\" target=\"_blank\" rel=\"noopener noreferrer\">signed distance functions<\/a>\u2014a special case of implicit representations. In the course of the project, an additional constraint was added at every point: the magnitude of a function underestimates the distance to the nearest surface. It is important, as there are some surfaces that do not have closed-form distance functions.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-a-sample-code-v12.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-a-sample-code-v12.png\" alt=\"building-a-rendering-engine-with-tensorflow-a-sample-code-v12\" width=\"618\" height=\"317\" class=\"aligncenter size-full wp-image-28382\" \/><\/a><\/center><\/p>\n<p>At the high level, the code above demonstrates how to build a syntax tree in the language of operations and geometries.<\/p>\n<p>&nbsp;<br \/>\n<strong>Polygonization vs. raytracing<\/strong><\/p>\n<p>Meanwhile, we need to render signed distance functions, which can be done either by means of:<\/p>\n<ul>\n<li style=\"margin-bottom: 10px;\">polygonizing (i.e., to populate a grid with values of the function and use this grid to approximate the surface with triangles)<\/li>\n<li style=\"margin-bottom: 10px;\">raytraycing (i.e., to set up a camera in space and send a ray to intersect a surface for each pixel. Then, draw the intersected points to the screen.)<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png\" alt=\"building-a-rendering-engine-with-tensorflow-polygonization-v12\" width=\"640\" class=\"aligncenter size-full wp-image-28384\" \/><\/a><\/center><\/p>\n<p>The architecture challenge lies in building algebraic expressions in such a fashion that allows for:<\/p>\n<ul>\n<li>reusing computation results automatically<\/li>\n<li>performing efficient computations on large arrays of input data<\/li>\n<li>parallelizing<\/li>\n<\/ul>\n<p>&nbsp;<br \/>\n<strong>Polygonizing with TensorFlow<\/strong><\/p>\n<p>Here steps in TensorFlow to enable:<\/p>\n<ul>\n<li>common subexpression elimination<\/li>\n<li>automatic differentiation<\/li>\n<li>compilation to GPU code<\/li>\n<\/ul>\n<p>As long as polygonization is a simpler method to render implicit surfaces, Andrew chose it.<\/p>\n<p>With the <em>marching cubes<\/em> algorithm to generate triangles given a volumetric grid of function values and TensorFlow variable class to initialize coordinate tensors, one gets this during polygonization:<\/p>\n<p><center><script src=\"https:\/\/gist.github.com\/ataber\/31562ae8cad9ff5f90bf1c3ab6420ddb.js\"><\/script><\/center><\/p>\n<p>This is what Andrew has got as an output:<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-final-output-v1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-final-output-v1.gif\" alt=\"building-a-rendering-engine-with-tensorflow-final-output-v1\" width=\"320\" height=\"320\" class=\"aligncenter size-full wp-image-28386\" \/><\/a><\/center><\/p>\n<p>(<strong>Note:<\/strong> When running on an Amazon GPU instance, it took Andrew about a minute to render a frame in 1080p, which is not competitive in contrast to raytracing via GPU shaders. However, with the image tensor in TensorFlow, one can backpropagate the error.)<\/p>\n<p>In addition to all the automation TensorFlow brings in, the library gives a helping hand when one needs to debug a huge computation tree. This can be easily achieved by wrapping each function with a call to <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">tf.name_scope<\/code> to visualize each different conceptual piece of the tree.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-debugging-v1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-debugging-v1.png\" alt=\"building-a-rendering-engine-with-tensorflow-debugging-v1\"  width=\"640\" height=\"700\" class=\"aligncenter size-full wp-image-28388\" \/><\/a><\/center><\/p>\n<p>For more details, you can read Andrew\u2019s <a href=\"https:\/\/medium.com\/@awildtaber\/building-a-rendering-engine-in-tensorflow-262438b2e062#.c2hkj4st7\" target=\"_blank\" rel=\"noopener noreferrer\">blog post<\/a> on the topic or browse through his <a href=\"http:\/\/slides.com\/ataber\/deck#\/\" target=\"_blank\" rel=\"noopener noreferrer\">presentation<\/a>. You can also watch the video from the meetup below.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_Autodesk_makes_use_of_TensorFlow\"><\/span>How Autodesk makes use of TensorFlow<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/mikehaley\" target=\"_blank\" rel=\"noopener noreferrer\">Mike Haley<\/a>, Senior Director of Machine Intelligence at Autodesk, provided an insight into four use cases of how TensorFlow is applied at the company:<\/p>\n<ul>\n<li>learning predictive and generative models to categorize large amounts 3D data<\/li>\n<li>designing graphs<\/li>\n<li>controlling robots to assemble structures<\/li>\n<li>delivering computational fluid dynamics and thermal simulation tools<\/li>\n<\/ul>\n<p>Check out the video below for his session. As well, don&#8217;t forget to join <a href=\"https:\/\/www.meetup.com\/TensorFlow-San-Francisco\/\" target=\"_blank\" rel=\"noopener noreferrer\">our group<\/a> to get informed about the upcoming events.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><script src=\"\/\/fast.wistia.com\/embed\/medias\/7llncy5ki0.jsonp\" async><\/script><script src=\"\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_embed wistia_async_7llncy5ki0\" style=\"height:360px;width:640px\">&nbsp;<\/div>\n<p><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/the-diversity-of-tensorflow-wrappers-gpus-generative-adversarial-networks-etc\/\">The Diversity of TensorFlow: Wrappers, GPUs, Generative Adversarial Networks, etc.<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/building-a-keras-based-image-classifier-using-tensorflow-for-a-back-end\/\">Building a Keras-Based Image Classifier Using TensorFlow for a Back End<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/how-tensorflow-can-help-to-perform-natural-language-processing-tasks\/\">How TensorFlow Can Help to Perform Natural Language Processing Tasks<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_experts\"><\/span>About the experts<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.linkedin.com\/in\/mikehaley\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/mike-haley-autodesk.png\" alt=\"\" width=\"150\" height=\"150\" class=\"alignright size-full wp-image-60907\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><a href=\"https:\/\/www.linkedin.com\/in\/mikehaley\" target=\"_blank\" rel=\"noopener noreferrer\">Mike Haley<\/a> leads the Machine Intelligence group at Autodesk, focused on ground-breaking machine learning technologies, which embrace everything from 3D digital design to how physical creation or assembly occurs. For the last several years, Mike\u2019s team has been focused on bringing geometric shape-analysis and high-scale machine learning techniques to 3D design information with the intent to make software a true partner in the design process.<\/small><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.linkedin.com\/in\/andrew-taber-9481a97\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/andrew-taber-intact-solutions.png\" alt=\"\" width=\"150\" height=\"150\" class=\"alignright size-full wp-image-60908\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><a href=\"https:\/\/www.linkedin.com\/in\/andrew-taber-9481a97\" target=\"_blank\" rel=\"noopener noreferrer\">Andrew Taber<\/a> is a software engineer at Intact Solutions, where he builds automated stress-testing simulation software on the web. You can find <a href=\"https:\/\/github.com\/ataber\/ataber.github.com\" target=\"_blank\" rel=\"noopener noreferrer\">his profile<\/a> on GitHub.<\/small><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Machine learning marches its way into a more and more broader pool of industries. The capabilities of TensorFlow are applied to an array of tasks from predicting wildfires to generating content.<\/p>\n<p>At the recent meetup in San Francisco, the attendees learnt what pitfalls may come up when developing a rendering image [&#8230;]<\/p>\n","protected":false},"author":3,"featured_media":28384,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[748,890,749],"class_list":["post-28379","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-machine-learning","tag-manufacturing","tag-tensorflow"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TensorFlow for Manufacturers: Building a 3D Rendering Engine | Altoros<\/title>\n<meta name=\"description\" content=\"With TensorFlow code samples, this blog post breaks down the process of polygonization used to build graphic applications, such as rendering engines.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TensorFlow for Manufacturers: Building a 3D Rendering Engine | Altoros\" \/>\n<meta property=\"og:description\" content=\"Machine learning marches its way into a more and more broader pool of industries. The capabilities of TensorFlow are applied to an array of tasks from predicting wildfires to generating content. At the recent meetup in San Francisco, the attendees learnt what pitfalls may come up when developing a rendering image [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-31T17:52:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-30T14:06:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png\" \/>\n\t<meta property=\"og:image:width\" content=\"902\" \/>\n\t<meta property=\"og:image:height\" content=\"564\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sophia Turol\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Turol\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/\",\"name\":\"TensorFlow for Manufacturers: Building a 3D Rendering Engine | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png\",\"datePublished\":\"2017-01-31T17:52:44+00:00\",\"dateModified\":\"2021-03-30T14:06:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png\",\"width\":902,\"height\":564},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TensorFlow for Manufacturers: Building a 3D Rendering Engine\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e\",\"name\":\"Sophia Turol\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg\",\"caption\":\"Sophia Turol\"},\"description\":\"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TensorFlow for Manufacturers: Building a 3D Rendering Engine | Altoros","description":"With TensorFlow code samples, this blog post breaks down the process of polygonization used to build graphic applications, such as rendering engines.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/","og_locale":"en_US","og_type":"article","og_title":"TensorFlow for Manufacturers: Building a 3D Rendering Engine | Altoros","og_description":"Machine learning marches its way into a more and more broader pool of industries. The capabilities of TensorFlow are applied to an array of tasks from predicting wildfires to generating content. At the recent meetup in San Francisco, the attendees learnt what pitfalls may come up when developing a rendering image [...]","og_url":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/","og_site_name":"Altoros","article_published_time":"2017-01-31T17:52:44+00:00","article_modified_time":"2021-03-30T14:06:47+00:00","og_image":[{"width":902,"height":564,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png","type":"image\/png"}],"author":"Sophia Turol","twitter_misc":{"Written by":"Sophia Turol","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/","url":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/","name":"TensorFlow for Manufacturers: Building a 3D Rendering Engine | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png","datePublished":"2017-01-31T17:52:44+00:00","dateModified":"2021-03-30T14:06:47+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/building-a-rendering-engine-with-tensorflow-polygonization-v12.png","width":902,"height":564},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/tensorflow-for-manufacturers-building-a-3d-rendering-engine\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TensorFlow for Manufacturers: Building a 3D Rendering Engine"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/58194952af19fe7b2b830846e077a58e","name":"Sophia Turol","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/05\/trello_card-96x96.jpg","caption":"Sophia Turol"},"description":"Sophia Turol is passionate about delivering well-structured articles that cater for picky technical audience. With 3+ years in technical writing and 5+ years in editorship, she enjoys collaboration with developers to create insightful, yet intelligible technical tutorials, overviews, and case studies. Sophie is enthusiastic about deep learning solutions\u2014TensorFlow in particular\u2014and PaaS systems, such as Cloud Foundry.","url":"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/28379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=28379"}],"version-history":[{"count":17,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/28379\/revisions"}],"predecessor-version":[{"id":60909,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/28379\/revisions\/60909"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/28384"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=28379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=28379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=28379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}