File size: 40,383 Bytes
03e3e7f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 |
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>glTF 2.0 — Blender Manual</title>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="canonical" href="https://docs.blender.org/manual/en/latest/addons/io_scene_gltf2.html"/>
<script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/language_data.js"></script>
<script type="text/javascript" src="../_static/js/version_switch.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Blender Manual"
href="../_static/opensearch.xml"/>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme_overrides.css" type="text/css" />
<link rel="alternate" hreflang="en" href="https://docs.blender.org/manual/en/latest/">
<link rel="alternate" hreflang="de" href="https://docs.blender.org/manual/de/latest/">
<link rel="alternate" hreflang="es" href="https://docs.blender.org/manual/es/latest/">
<link rel="alternate" hreflang="fi" href="https://docs.blender.org/manual/fi/latest/">
<link rel="alternate" hreflang="fr" href="https://docs.blender.org/manual/fr/latest/">
<link rel="alternate" hreflang="it" href="https://docs.blender.org/manual/it/latest/">
<link rel="alternate" hreflang="ja" href="https://docs.blender.org/manual/ja/latest/">
<link rel="alternate" hreflang="ko" href="https://docs.blender.org/manual/ko/latest/">
<link rel="alternate" hreflang="nb" href="https://docs.blender.org/manual/nb/latest/">
<link rel="alternate" hreflang="pt" href="https://docs.blender.org/manual/pt/latest/">
<link rel="alternate" hreflang="ru" href="https://docs.blender.org/manual/ru/latest/">
<link rel="alternate" hreflang="sl" href="https://docs.blender.org/manual/sl/latest/">
<link rel="alternate" hreflang="sr" href="https://docs.blender.org/manual/sr/latest/">
<link rel="alternate" hreflang="uk" href="https://docs.blender.org/manual/uk/latest/">
<link rel="alternate" hreflang="vi" href="https://docs.blender.org/manual/vi/latest/">
<link rel="alternate" hreflang="zh-Hans" href="https://docs.blender.org/manual/zh-hans/latest/">
<link rel="alternate" hreflang="zh-Hant" href="https://docs.blender.org/manual/zh-hant/latest/">
<link rel="alternate" hreflang="x-default" href="https://docs.blender.org/manual/en/latest/">
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Wavefront OBJ" href="io_scene_obj.html" />
<link rel="prev" title="FBX" href="io_scene_fbx.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> Blender 2.80 Manual
<img src="../_static/blender-logo.svg" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../interface/index.html">User Interface</a></li>
<li class="toctree-l1"><a class="reference internal" href="../editors/index.html">Editors</a></li>
<li class="toctree-l1"><a class="reference internal" href="../scene_layout/index.html">Scenes & Objects</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modeling/index.html">Modeling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../sculpt_paint/index.html">Sculpting & Painting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../grease_pencil/index.html">Grease Pencil</a></li>
<li class="toctree-l1"><a class="reference internal" href="../animation/index.html">Animation & Rigging</a></li>
<li class="toctree-l1"><a class="reference internal" href="../physics/index.html">Physics</a></li>
<li class="toctree-l1"><a class="reference internal" href="../render/index.html">Rendering</a></li>
<li class="toctree-l1"><a class="reference internal" href="../compositing/index.html">Compositing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../movie_clip/index.html">Tracking & Masking</a></li>
<li class="toctree-l1"><a class="reference internal" href="../video_editing/index.html">Video Editing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../files/index.html">Files & Data System</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Add-ons</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="index.html#import-export">Import-Export</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="io_anim_bvh.html">BioVision Motion Capture (BVH)</a></li>
<li class="toctree-l3"><a class="reference internal" href="io_curve_svg.html">Scalable Vector Graphics (SVG)</a></li>
<li class="toctree-l3"><a class="reference internal" href="io_mesh_ply.html">Stanford PLY</a></li>
<li class="toctree-l3"><a class="reference internal" href="io_mesh_stl.html">STL</a></li>
<li class="toctree-l3"><a class="reference internal" href="io_mesh_uv_layout.html">UV Layout</a></li>
<li class="toctree-l3"><a class="reference internal" href="io_scene_fbx.html">FBX</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">glTF 2.0</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#usage">Usage</a></li>
<li class="toctree-l4"><a class="reference internal" href="#file-format-variations">File Format Variations</a></li>
<li class="toctree-l4"><a class="reference internal" href="#properties">Properties</a></li>
<li class="toctree-l4"><a class="reference internal" href="#contributing">Contributing</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="io_scene_obj.html">Wavefront OBJ</a></li>
<li class="toctree-l3"><a class="reference internal" href="io_scene_x3d.html">Web3D X3D/VRML2</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="index.html#render">Render</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../advanced/index.html">Advanced</a></li>
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
<li class="toctree-l1"><a class="reference internal" href="../glossary/index.html">Glossary</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../about/index.html">About this Manual</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">Blender 2.80 Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Docs</a> »</li>
<li><a href="index.html">Add-ons</a> »</li>
<li>glTF 2.0</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/addons/io_scene_gltf2.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="gltf-2-0">
<h1>glTF 2.0<a class="headerlink" href="#gltf-2-0" title="Permalink to this headline">¶</a></h1>
<div class="refbox admonition">
<p class="first admonition-title">Reference</p>
<table class="last docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Category:</th><td class="field-body">Import-Export</td>
</tr>
<tr class="field-even field"><th class="field-name">Menu:</th><td class="field-body"><span class="menuselection">File ‣ Import/Export ‣ glTF 2.0 (.glb, .gltf)</span></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="usage">
<h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
<p>glTF™ (GL Transmission Format) is used for transmission and loading of 3D models
in web and native applications. glTF reduces the size of 3D models and
the runtime processing needed to unpack and render those models.
This format is commonly used on the web, and has support in various 3D engines
such as Unity3D, Unreal Engine 4, and Godot.</p>
<p>This importer/exporter supports the following glTF 2.0 features:</p>
<ul class="simple">
<li>Meshes</li>
<li>Materials (Principled BSDF) and Shadeless (Unlit)</li>
<li>Textures</li>
<li>Cameras</li>
<li>Punctual lights (point, spot, and directional)</li>
<li>Animation (keyframe, shape key, and skinning)</li>
</ul>
<div class="section" id="meshes">
<h3>Meshes<a class="headerlink" href="#meshes" title="Permalink to this headline">¶</a></h3>
<p>glTF’s internal structure mimics the memory buffers commonly used by graphics chips
when rendering in real-time, such that assets can be delivered to desktop, web, or mobile clients
and be promptly displayed with minimal processing. As a result, quads and n-gons
are automatically converted to triangles when exporting to glTF.
Discontinuous UVs and flat-shaded edges may result in moderately higher vertex counts in glTF
compared to Blender, as such vertices are separated for export.
Likewise, curves and other non-mesh data are not preserved,
and must be converted to meshes prior to export.</p>
</div>
<div class="section" id="materials">
<h3>Materials<a class="headerlink" href="#materials" title="Permalink to this headline">¶</a></h3>
<p>The core material system in glTF supports a metal/rough <abbr title="Physically Based Rendering">PBR</abbr> workflow
with the following channels of information:</p>
<ul class="simple">
<li>Base Color</li>
<li>Metallic</li>
<li>Roughness</li>
<li>Baked Ambient Occlusion</li>
<li>Normal Map</li>
<li>Emissive</li>
</ul>
<div class="figure" id="id1">
<img alt="../_images/addons_io-gltf2_material-channels.jpg" src="../_images/addons_io-gltf2_material-channels.jpg" />
<p class="caption"><span class="caption-text">An example of the various image maps available in the glTF 2.0 core format. This is
the <a class="reference external" href="https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/WaterBottle">water bottle sample model</a>
shown alongside slices of its various image maps.</span></p>
</div>
</div>
<div class="section" id="imported-materials">
<h3>Imported Materials<a class="headerlink" href="#imported-materials" title="Permalink to this headline">¶</a></h3>
<p>The glTF material system is different from Blender’s own materials. When a glTF file is imported,
the add-on will construct a set of Blender nodes to replicate each glTF material as closely as possible.</p>
<p>The importer supports Metal/Rough PBR (core glTF), Spec/Gloss PBR (<code class="docutils literal notranslate"><span class="pre">KHR_materials_pbrSpecularGlossiness</span></code>)
and Shadeless (<code class="docutils literal notranslate"><span class="pre">KHR_materials_unlit</span></code>) materials.</p>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">Examining the result of the material import process is a good way to see examples of
the types of material nodes and settings that can be exported to glTF.</p>
</div>
</div>
<div class="section" id="exported-materials">
<h3>Exported Materials<a class="headerlink" href="#exported-materials" title="Permalink to this headline">¶</a></h3>
<p>The exporter supports Metal/Rough PBR (core glTF) and Shadeless (<code class="docutils literal notranslate"><span class="pre">KHR_materials_unlit</span></code>) materials.
It will construct a glTF material based on the nodes it recognizes in the Blender material.
The material export process handles the settings described below.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">When image textures are used by materials, glTF requires that images be in PNG or JPEG format.
The add-on will automatically convert images from other formats, increasing export time.</p>
</div>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">To create Shadeless (Unlit) materials, use the Background material type.</p>
</div>
<div class="section" id="base-color">
<h4>Base Color<a class="headerlink" href="#base-color" title="Permalink to this headline">¶</a></h4>
<p>The glTF base color is determined by looking for a Base Color input on a Principled BSDF node.
If the input is unconnected, the input’s default color (the color field next to the unconnected socket)
is used as the Base Color for the glTF material.</p>
<div class="figure" id="id2">
<img alt="../_images/addons_io-gltf2_material-baseColor-solidGreen.png" src="../_images/addons_io-gltf2_material-baseColor-solidGreen.png" />
<p class="caption"><span class="caption-text">A solid base color can be specified directly on the node.</span></p>
</div>
<p>If an Image Texture node is found to be connected to the Base Color input,
that image will be used as the glTF base color.</p>
<div class="figure" id="id3">
<img alt="../_images/addons_io-gltf2_material-baseColor-imageHookup.png" src="../_images/addons_io-gltf2_material-baseColor-imageHookup.png" />
<p class="caption"><span class="caption-text">An image is used as the glTF base color.</span></p>
</div>
</div>
<div class="section" id="metallic-and-roughness">
<h4>Metallic and Roughness<a class="headerlink" href="#metallic-and-roughness" title="Permalink to this headline">¶</a></h4>
<p>These values are read from the Principled BSDF node. If both of these inputs are unconnected,
the node will display sliders to control their respective values between 0.0 and 1.0,
and these values will be copied into the glTF.</p>
<p>When using an image, glTF expects the metallic values to be encoded in the blue (<code class="docutils literal notranslate"><span class="pre">B</span></code>) channel,
and roughness to be encoded in the green (<code class="docutils literal notranslate"><span class="pre">G</span></code>) channel of the same image.
If images are connected to the Blender node in a manner that does not follow this convention,
the add-on may attempt to adapt the image to the correct form during exporting (with an increased export time).</p>
<p>In the Blender node tree, it is recommended to use a Separate RGB node
to separate the channels from an Image Texture node, and
connect the green (<code class="docutils literal notranslate"><span class="pre">G</span></code>) channel to Roughness, and blue (<code class="docutils literal notranslate"><span class="pre">B</span></code>) to Metallic.
The glTF exporter will recognize this arrangement as matching the glTF standard, and
that will allow it to simply copy the image texture into the glTF file during export.</p>
<p>The Image Texture node for this should have its <em>Color Space</em> set to Non-Color.</p>
<div class="figure" id="id4">
<img alt="../_images/addons_io-gltf2_material-metalRough.png" src="../_images/addons_io-gltf2_material-metalRough.png" />
<p class="caption"><span class="caption-text">A metallic/roughness image connected in a manner consistent with the glTF standard,
allowing it to be used verbatim inside an exported glTF file.</span></p>
</div>
</div>
<div class="section" id="baked-ambient-occlusion">
<h4>Baked Ambient Occlusion<a class="headerlink" href="#baked-ambient-occlusion" title="Permalink to this headline">¶</a></h4>
<p>glTF is capable of storing a baked ambient occlusion map.
Currently there is no arrangement of nodes that causes Blender
to use such a map in exactly the same way as intended in glTF.
However, if the exporter finds a custom node group by the name of <code class="docutils literal notranslate"><span class="pre">glTF</span> <span class="pre">Settings</span></code>, and
finds an input named <code class="docutils literal notranslate"><span class="pre">Occlusion</span></code> on that node group,
it will look for an Image Texture attached there to use as the occlusion map in glTF.
The effect need not be shown in Blender, as Blender has other ways of showing ambient occlusion,
but this method will allow the exporter to write an occlusion image to the glTF.
This can be useful to real-time glTF viewers, particularly on platforms where there
may not be spare power for computing such things at render time.</p>
<div class="figure" id="id5">
<img alt="../_images/addons_io-gltf2_material-occlusionOnly.png" src="../_images/addons_io-gltf2_material-occlusionOnly.png" />
<p class="caption"><span class="caption-text">A pre-baked ambient occlusion map, connected to a node that doesn’t render but will export to glTF.</span></p>
</div>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">The easiest way to create the custom node group is to import an existing glTF model
that contains an occlusion map, such as
the <a class="reference external" href="https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/WaterBottle">water bottle</a>
or another existing model. A manually created custom node group can also be used.</p>
</div>
<p>glTF stores occlusion in the red (<code class="docutils literal notranslate"><span class="pre">R</span></code>) channel, allowing it to optionally share
the same image with the roughness and metallic channels.</p>
<div class="figure" id="id6">
<img alt="../_images/addons_io-gltf2_material-orm-hookup.png" src="../_images/addons_io-gltf2_material-orm-hookup.png" />
<p class="caption"><span class="caption-text">This combination of nodes mimics the way glTF packs occlusion, roughness, and
metallic values into a single image.</span></p>
</div>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">The Cycles render engine has a Bake panel that can be used to bake
ambient occlusion maps. The resulting image can be saved and connected
directly to the <code class="docutils literal notranslate"><span class="pre">glTF</span> <span class="pre">Settings</span></code> node.</p>
</div>
</div>
<div class="section" id="normal-map">
<h4>Normal Map<a class="headerlink" href="#normal-map" title="Permalink to this headline">¶</a></h4>
<p>To use a normal map in glTF, connect an Image Texture node’s color output
to a Normal Map node’s color input, and then connect the Normal Map normal output to
the Principled BSDF node’s normal input. The Image Texture node
for this should have its <em>Color Space</em> property set to Non-Color.</p>
<p>The Normal Map node must remain on its default property of Tangent Space as
this is the only type of normal map currently supported by glTF.
The strength of the normal map can be adjusted on this node.
The exporter is not exporting these nodes directly, but will use them to locate
the correct image and will copy the strength setting into the glTF.</p>
<div class="figure" id="id7">
<img alt="../_images/addons_io-gltf2_material-normal.png" src="../_images/addons_io-gltf2_material-normal.png" />
<p class="caption"><span class="caption-text">A normal map image connected such that the exporter will find it and copy it
to the glTF file.</span></p>
</div>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p>The Cycles render engine has a Bake panel that can be used to bake
tangent-space normal maps from almost any other arrangement of normal vector nodes.
Switch the Bake type to Normal. Keep the default space settings
(space: Tangent, R: +X, G: +Y, B: +Z) when using this bake panel for glTF.
The resulting baked image can be saved and plugged into to a new material using
the Normal Map node as described above, allowing it to export correctly.</p>
<p class="last">See: <a class="reference internal" href="../render/cycles/baking.html"><span class="doc">Cycles Render Baking</span></a></p>
</div>
</div>
<div class="section" id="emissive">
<h4>Emissive<a class="headerlink" href="#emissive" title="Permalink to this headline">¶</a></h4>
<p>An Image Texture node can be connected to an Emission shader node, and
optionally combined with properties from a Principled BSDF node by way of an Add shader node.</p>
<p>If the glTF exporter finds an image connected to the Emission shader node,
it will export that image as the glTF material’s emissive texture.</p>
<div class="figure" id="id8">
<img alt="../_images/addons_io-gltf2_material-emissive.png" src="../_images/addons_io-gltf2_material-emissive.png" />
<p class="caption"><span class="caption-text">An Emission node can be added to existing nodes.</span></p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The <em>Emission</em> input of the Principled BSDF node is not yet supported by this exporter.
This may change in a future version.</p>
</div>
</div>
<div class="section" id="double-sided-backface-culling">
<h4>Double Sided / Backface Culling<a class="headerlink" href="#double-sided-backface-culling" title="Permalink to this headline">¶</a></h4>
<p>For materials where only the front faces will be visible, turn on <em>Backface Culling</em> in
the <em>Settings</em> panel of an Eevee material. When using other engines (Cycles, Workbench)
you can temporarily switch to Eevee to configure this setting, then switch back.</p>
<p>Leave this box un-checked for double-sided materials.</p>
<div class="figure" id="id9">
<img alt="../_images/addons_io-gltf2_material-backfaceCulling.png" src="../_images/addons_io-gltf2_material-backfaceCulling.png" />
<p class="caption"><span class="caption-text">The inverse of this setting controls glTF’s <code class="docutils literal notranslate"><span class="pre">DoubleSided</span></code> flag.</span></p>
</div>
</div>
<div class="section" id="blend-modes">
<h4>Blend Modes<a class="headerlink" href="#blend-modes" title="Permalink to this headline">¶</a></h4>
<p>The Base Color input can optionally supply alpha values.
How these values are treated by glTF depends on the selected blend mode.</p>
<p>With the Eevee render engine selected, each material has a Blend Mode on
the material settings panel. Use this setting to define how alpha values from
the Base Color channel are treated in glTF. Three settings are supported by glTF:</p>
<dl class="docutils">
<dt>Opaque</dt>
<dd>Alpha values are ignored (the default).</dd>
<dt>Alpha Blend</dt>
<dd>Lower alpha values cause blending with background objects.</dd>
<dt>Alpha Clip</dt>
<dd>Alpha values below the <em>Clip Threshold</em> setting will cause portions
of the material to not be rendered at all. Everything else is rendered as opaque.</dd>
</dl>
<div class="figure" id="id10">
<img alt="../_images/addons_io-gltf2_material-alphaBlend.png" src="../_images/addons_io-gltf2_material-alphaBlend.png" />
<p class="caption"><span class="caption-text">With the Eevee engine selected, a material’s blend modes are configurable.</span></p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Be aware that transparency (or <em>Alpha Blend</em> mode) is complex for real-time engines
to render, and may behave in unexpected ways after export. Where possible,
use <em>Alpha Clip</em> mode instead, or place <em>Opaque</em> polygons behind only
a single layer of <em>Alpha Blend</em> polygons.</p>
</div>
</div>
<div class="section" id="uv-mapping">
<h4>UV Mapping<a class="headerlink" href="#uv-mapping" title="Permalink to this headline">¶</a></h4>
<p>Control over UV map selection and transformations is available by connecting a UV Map node
and a Mapping node to any Image Texture node.</p>
<p>Settings from the Mapping node are exported using a glTF extension named <code class="docutils literal notranslate"><span class="pre">KHR_texture_transform</span></code>.
There is a mapping type selector across the top. <em>Point</em> is the recommended type for export.
<em>Texture</em> and <em>Vector</em> are also supported. The supported offsets are:</p>
<ul class="simple">
<li><em>Location</em> - X and Y</li>
<li><em>Rotation</em> - Z only</li>
<li><em>Scale</em> - X and Y</li>
</ul>
<p>For the <em>Texture</em> type, <em>Scale</em> X and Y must be equal (uniform scaling).</p>
<div class="figure" id="id11">
<img alt="../_images/addons_io-gltf2_material-mapping.png" src="../_images/addons_io-gltf2_material-mapping.png" />
<p class="caption"><span class="caption-text">A deliberate choice of UV mapping.</span></p>
</div>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">These nodes are optional. Not all glTF readers support multiple UV maps or texture transforms.</p>
</div>
</div>
<div class="section" id="factors">
<h4>Factors<a class="headerlink" href="#factors" title="Permalink to this headline">¶</a></h4>
<p>Any Image Texture nodes may optionally be multiplied with a constant color or scalar.
These will be written as factors in the glTF file, which are numbers that are multiplied
with the specified image textures. These are not common.</p>
</div>
<div class="section" id="example">
<h4>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h4>
<p>A single material may use all of the above at the same time, if desired. This figure shows
a typical node structure when several of the above options are applied at once:</p>
<div class="figure" id="id12">
<img alt="../_images/addons_io-gltf2_material-principled.png" src="../_images/addons_io-gltf2_material-principled.png" />
<p class="caption"><span class="caption-text">A Principled BSDF material with an emissive texture.</span></p>
</div>
</div>
</div>
<div class="section" id="extensions">
<h3>Extensions<a class="headerlink" href="#extensions" title="Permalink to this headline">¶</a></h3>
<p>The core glTF 2.0 format can be extended with extra information, using glTF extensions.
This allows the file format to hold details that were not considered universal at the time of first publication.
Not all glTF readers support all extensions, but some are fairly common.</p>
<p>Certain Blender features can only be exported to glTF via these extensions.
The following <a class="reference external" href="https://github.com/KhronosGroup/glTF/tree/master/extensions">glTF 2.0 extensions</a>
are supported directly by this add-on:</p>
<p class="rubric">Import</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">KHR_materials_pbrSpecularGlossiness</span></code></li>
<li><code class="docutils literal notranslate"><span class="pre">KHR_lights_punctual</span></code></li>
<li><code class="docutils literal notranslate"><span class="pre">KHR_materials_unlit</span></code></li>
<li><code class="docutils literal notranslate"><span class="pre">KHR_texture_transform</span></code></li>
</ul>
<p class="rubric">Export</p>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">KHR_draco_mesh_compression</span></code></li>
<li><code class="docutils literal notranslate"><span class="pre">KHR_lights_punctual</span></code></li>
<li><code class="docutils literal notranslate"><span class="pre">KHR_materials_unlit</span></code></li>
<li><code class="docutils literal notranslate"><span class="pre">KHR_texture_transform</span></code></li>
</ul>
</div>
<div class="section" id="animation">
<h3>Animation<a class="headerlink" href="#animation" title="Permalink to this headline">¶</a></h3>
<p>glTF allows multiple animations per file, with animations targeted to
particular objects at time of export. To ensure that an animation is included,
either (a) make it the active Action on the object, (b) create a single-strip NLA track,
or (c) stash the action.</p>
<p class="rubric">Supported</p>
<p>Only certain types of animation are supported:</p>
<ul class="simple">
<li>Keyframe (translation, rotation, scale)</li>
<li>Shape keys</li>
<li>Armatures / skinning</li>
</ul>
<p>Animation of other properties, like lights or materials, will be ignored.</p>
</div>
<div class="section" id="custom-properties">
<h3>Custom Properties<a class="headerlink" href="#custom-properties" title="Permalink to this headline">¶</a></h3>
<p>Custom properties on most objects are preserved in glTF export/import, and
may be used for user-specific purposes.</p>
</div>
</div>
<div class="section" id="file-format-variations">
<h2>File Format Variations<a class="headerlink" href="#file-format-variations" title="Permalink to this headline">¶</a></h2>
<p>The glTF specification identifies different ways the data can be stored.
The importer handles all of these ways. The exporter will ask the user to
select one of the following forms:</p>
<div class="section" id="gltf-binary-glb">
<h3>glTF Binary (<code class="docutils literal notranslate"><span class="pre">.glb</span></code>)<a class="headerlink" href="#gltf-binary-glb" title="Permalink to this headline">¶</a></h3>
<p>This produces a single <code class="docutils literal notranslate"><span class="pre">.glb</span></code> file with all mesh data, image textures, and
related information packed into a single binary file.</p>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">Using a single file makes it easy to share or copy the model to other systems and services.</p>
</div>
</div>
<div class="section" id="gltf-separate-gltf-bin-textures">
<h3>glTF Separate (<code class="docutils literal notranslate"><span class="pre">.gltf</span></code> + <code class="docutils literal notranslate"><span class="pre">.bin</span></code> + textures)<a class="headerlink" href="#gltf-separate-gltf-bin-textures" title="Permalink to this headline">¶</a></h3>
<p>This produces a JSON text-based <code class="docutils literal notranslate"><span class="pre">.gltf</span></code> file describing the overall structure,
along with a <code class="docutils literal notranslate"><span class="pre">.bin</span></code> file containing mesh and vector data, and
optionally a number of <code class="docutils literal notranslate"><span class="pre">.png</span></code> or <code class="docutils literal notranslate"><span class="pre">.jpg</span></code> files containing image textures
referenced by the <code class="docutils literal notranslate"><span class="pre">.gltf</span></code> file.</p>
<div class="admonition tip">
<p class="first admonition-title">Tip</p>
<p class="last">Having an assortment of separate files makes it much easier for a user to
go back and edit any JSON or images after the export has completed.</p>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">Be aware that sharing this format requires sharing all of these separate files
together as a group.</p>
</div>
</div>
<div class="section" id="gltf-embedded-gltf">
<h3>glTF Embedded (<code class="docutils literal notranslate"><span class="pre">.gltf</span></code>)<a class="headerlink" href="#gltf-embedded-gltf" title="Permalink to this headline">¶</a></h3>
<p>This produces a JSON text-based <code class="docutils literal notranslate"><span class="pre">.gltf</span></code> file, with all mesh data and
image data encoded (using Base64) within the file. This form is useful if
the asset must be shared over a plain-text-only connection.</p>
<div class="admonition warning">
<p class="first admonition-title">Warning</p>
<p class="last">This is the least efficient of the available forms, and should only be used when required.</p>
</div>
</div>
</div>
<div class="section" id="properties">
<h2>Properties<a class="headerlink" href="#properties" title="Permalink to this headline">¶</a></h2>
<div class="section" id="import">
<h3>Import<a class="headerlink" href="#import" title="Permalink to this headline">¶</a></h3>
<dl class="docutils">
<dt>Pack Images</dt>
<dd>Pack all images into the blend-file.</dd>
<dt>Shading</dt>
<dd>How normals are computed during import.</dd>
</dl>
</div>
<div class="section" id="export">
<h3>Export<a class="headerlink" href="#export" title="Permalink to this headline">¶</a></h3>
<div class="section" id="general-tab">
<h4>General Tab<a class="headerlink" href="#general-tab" title="Permalink to this headline">¶</a></h4>
<dl class="docutils">
<dt>Format</dt>
<dd>See: <a class="reference internal" href="#file-format-variations">File Format Variations</a></dd>
<dt>Selected Objects</dt>
<dd>Export selected objects only.</dd>
<dt>Apply Modifiers</dt>
<dd>Apply modifiers (excluding armatures) to mesh objects.</dd>
<dt>Y Up</dt>
<dd>Export using glTF convention, +Y up.</dd>
<dt>Custom Properties</dt>
<dd>Export custom properties as glTF extras.</dd>
<dt>Remember Export Settings</dt>
<dd>Store export settings in the Blender file, so they will be recalled next time
the file is opened.</dd>
<dt>Copyright</dt>
<dd>Legal rights and conditions for the model.</dd>
</dl>
</div>
<div class="section" id="meshes-tab">
<h4>Meshes Tab<a class="headerlink" href="#meshes-tab" title="Permalink to this headline">¶</a></h4>
<dl class="docutils">
<dt>UVs</dt>
<dd>Export UVs (texture coordinates) with meshes.</dd>
<dt>Normals</dt>
<dd>Export vertex normals with meshes.</dd>
<dt>Tangents</dt>
<dd>Export vertex tangents with meshes.</dd>
<dt>Vertex Colors</dt>
<dd>Export vertex colors with meshes.</dd>
<dt>Materials</dt>
<dd>Export materials.</dd>
<dt>Draco mesh compression</dt>
<dd>Compress meshes using Google Draco.</dd>
<dt>Compression level</dt>
<dd>Higher compression results in slower encoding and decoding.</dd>
<dt>Position quantization bits</dt>
<dd>Higher values result in better compression rates.</dd>
<dt>Normal quantization bits</dt>
<dd>Higher values result in better compression rates.</dd>
<dt>Texcoord quantization bits</dt>
<dd>Higher values result in better compression rates.</dd>
</dl>
</div>
<div class="section" id="objects-tab">
<h4>Objects Tab<a class="headerlink" href="#objects-tab" title="Permalink to this headline">¶</a></h4>
<dl class="docutils">
<dt>Cameras</dt>
<dd>Export cameras.</dd>
<dt>Punctual Lights</dt>
<dd>Export directional, point, and spot lights. Uses the <code class="docutils literal notranslate"><span class="pre">KHR_lights_punctual</span></code> glTF extension.</dd>
</dl>
</div>
<div class="section" id="animation-tab">
<h4>Animation Tab<a class="headerlink" href="#animation-tab" title="Permalink to this headline">¶</a></h4>
<dl class="docutils">
<dt>Use Current Frame</dt>
<dd>Export the scene in the current animation frame.</dd>
<dt>Animations</dt>
<dd>Exports active actions and NLA tracks as glTF animations.</dd>
<dt>Limit to Playback Range</dt>
<dd>Clips animations to selected playback range.</dd>
<dt>Sampling Rate</dt>
<dd>How often to evaluate animated values (in frames).</dd>
<dt>Always Sample Animations</dt>
<dd>Apply sampling to all animations.</dd>
<dt>Skinning</dt>
<dd>Export skinning (armature) data.</dd>
<dt>Bake Skinning Constraints</dt>
<dd>Apply skinning constraints to armatures.</dd>
<dt>Include All Bone Influences</dt>
<dd>Allow >4 joint vertex influences. Models may appear incorrectly in many viewers.</dd>
<dt>Shape Keys</dt>
<dd>Export shape keys (morph targets).</dd>
<dt>Shape Key Normals</dt>
<dd>Export vertex normals with shape keys (morph targets).</dd>
<dt>Shape Key Tangents</dt>
<dd>Export vertex tangents with shape keys (morph targets).</dd>
</dl>
</div>
</div>
</div>
<div class="section" id="contributing">
<h2>Contributing<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h2>
<p>This importer/exporter is developed through
the <a class="reference external" href="https://github.com/KhronosGroup/glTF-Blender-IO">glTF-Blender-IO repository</a>,
where you can file bug reports, submit feature requests, or contribute code.</p>
<p>Discussion and development of the glTF 2.0 format itself takes place on
the Khronos Group <a class="reference external" href="https://github.com/KhronosGroup/glTF">glTF GitHub repository</a>,
and feedback there is welcome.</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="io_scene_obj.html" class="btn btn-neutral float-right" title="Wavefront OBJ" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="io_scene_fbx.html" class="btn btn-neutral float-left" title="FBX" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
© Copyright : This page is licensed under a CC-BY-SA 4.0 Int. License
</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="document versions">
<ul id="versionwrap" role="presentation">
<li style="float:left" role="presentation">
<span id="version-dropdown" class="version-btn" tabindex="0" role="button" aria-label="versions selector" aria-haspopup="true" aria-controls="version-vsnlist" aria-disabled="true">
2.80
</span>
<ul id="version-vsnlist" class="version-list" role="menu" aria-labelledby="version-dropdown" aria-hidden="true">
<li role="presentation">Loading...</li>
</ul>
</li>
<li style="float:right" role="presentation">
<span id="lang-dropdown" class="version-btn" tabindex="0" role="button" aria-label="language selector" aria-haspopup="true" aria-controls="version-langlist">
en
</span>
<ul id="version-langlist" class="version-list" role="menu" aria-labelledby="lang-dropdown" aria-hidden="true">
<li role="presentation">Loading...</li>
</ul>
</li>
</ul>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-1418081-1', 'auto');
ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
</body>
</html> |