Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated markdown documentation files #2037

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
0fd9646
Updated markdown documentation files.
StefanHabel Sep 29, 2024
d2e5281
Replaced relative image sources in `Viewer.md` with absolute image UR…
StefanHabel Sep 30, 2024
678da24
Using HTML tables for image galleries.
StefanHabel Sep 30, 2024
b7c604c
Moved figure text back to above figures.
StefanHabel Sep 30, 2024
dd275ae
Removed small image captions from image galleries.
StefanHabel Sep 30, 2024
a974b58
Restored Example Images headline on `Viewer.md` page.
StefanHabel Sep 30, 2024
3a0436a
Restored Example Images headline on `GraphEditor.md` page.
StefanHabel Sep 30, 2024
dd567d8
Minor updates to image descriptions
jstone-lucasfilm Sep 30, 2024
8536d05
Replicating change in `README.md` in `Viewer.md`.
StefanHabel Sep 30, 2024
ba35d10
Adding style attributes to image gallery tables to tweak spacing.
StefanHabel Sep 30, 2024
fe3a5fe
Replaced image gallery tables with paragraph elements and relative wi…
StefanHabel Sep 30, 2024
b4ec769
Using https://materialx.org/Specification.html for the MaterialX Spec…
StefanHabel Sep 30, 2024
4b0aeb5
Remove extra newlines
jstone-lucasfilm Sep 30, 2024
8c4aa53
Remove extra newlines
jstone-lucasfilm Sep 30, 2024
11bd5e5
Omit alternative text for now
jstone-lucasfilm Sep 30, 2024
6f99f51
Omit alternative text for now
jstone-lucasfilm Sep 30, 2024
336975f
Omit alternative text for now
jstone-lucasfilm Sep 30, 2024
3461dff
Adjust to align edges
jstone-lucasfilm Sep 30, 2024
db5cc09
Restore previous version
jstone-lucasfilm Sep 30, 2024
f9de866
Merge branch 'main' into #342-markdown-changes
jstone-lucasfilm Oct 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 28 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
<p align="center">
<img src="documents/Images/MaterialXLogo.png" height="170" />
<img src="https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/MaterialXLogo.png" height="170" />
</p>

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/LICENSE)
[![Version](https://img.shields.io/github/v/release/AcademySoftwareFoundation/MaterialX)](https://github.com/AcademySoftwareFoundation/MaterialX/releases/latest)
[![Build Status](https://github.com/AcademySoftwareFoundation/MaterialX/workflows/main/badge.svg?branch=main)](https://github.com/AcademySoftwareFoundation/MaterialX/actions?query=branch%3Amain)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6025/badge)](https://bestpractices.coreinfrastructure.org/projects/6025)

### Introduction
## Introduction

MaterialX is an open standard for representing rich material and look-development content in computer graphics, enabling its platform-independent description and exchange across applications and renderers. Launched at [Industrial Light & Magic](https://www.ilm.com/) in 2012, MaterialX has been a key technology in their feature films and real-time experiences since _Star Wars: The Force Awakens_ and _Millennium Falcon: Smugglers Run_. The project was released as open source in 2017, with companies including Sony Pictures Imageworks, Pixar, Autodesk, Adobe, and SideFX contributing to its ongoing development. In 2021, MaterialX became the seventh hosted project of the [Academy Software Foundation](https://www.aswf.io/).

### Quick Start for Developers
## Quick Start for Developers

- Download the latest version of the [CMake](https://cmake.org/) build system.
- Point CMake to the root of the MaterialX library and generate C++ projects for your platform and compiler.
- Select the `MATERIALX_BUILD_PYTHON` option to build Python bindings.
- Select the `MATERIALX_BUILD_VIEWER` option to build the MaterialX viewer.

### Supported Platforms
## Supported Platforms

The MaterialX codebase requires a compiler with support for C++17, and can be built with any of the following:

Expand All @@ -28,43 +28,55 @@ The MaterialX codebase requires a compiler with support for C++17, and can be bu

The Python bindings for MaterialX are based on [PyBind11](https://github.com/pybind/pybind11), and support Python versions 3.6 and greater.

### MaterialX Viewer
## MaterialX Viewer

The [MaterialX Viewer](documents/DeveloperGuide/Viewer.md) leverages shader generation to build GLSL shaders from MaterialX graphs, rendering the results using the NanoGUI framework.

**Figure 1:** Procedural and uniform materials in the MaterialX viewer
<p float="left">
<img src="documents/Images/MaterialXView_Marble.png" width="204" />
<img src="documents/Images/MaterialXView_Copper.png" width="204" />
<img src="documents/Images/MaterialXView_Plastic.png" width="204" />
<img src="documents/Images/MaterialXView_Carpaint.png" width="204" />
<img title="Standard Surface Marble material"
src="https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/MaterialXView_Marble.png"
width="24%" />
<img title="Standard Surface Copper material"
src="https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/MaterialXView_Copper.png"
width="24%" />
<img title="Standard Surface Plastic material"
src="https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/MaterialXView_Plastic.png"
width="24%" />
<img title="Standard Surface Carpaint material"
src="https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/MaterialXView_Carpaint.png"
width="24%" />
</p>

**Figure 2:** Textured, color-space-managed materials in the MaterialX viewer
<p float="left">
<img src="documents/Images/MaterialXView_TiledBrass.png" width="412" />
<img src="documents/Images/MaterialXView_TiledWood.png" width="412" />
<img title="Standard Surface Tiled Brass material"
src="https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/MaterialXView_TiledBrass.png"
width="49%" />
<img title="Standard Surface Tiled Wood material"
src="https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/MaterialXView_TiledWood.png"
width="49%" />
</p>

### Open Chess Set
## Open Chess Set

The Open Chess Set is an open reference asset, consisting of a [MaterialX file](resources/Materials/Examples/StandardSurface/standard_surface_chess_set.mtlx) in the Standard Surface shading model and a [geometry file](resources/Geometry) in the glTF format. It was authored by Moeen Sayed and Mujtaba Sayed, and was contributed to the MaterialX project by Side Effects.

**Figure 3:** The Open Chess Set, rendered in Arnold for Maya
<img src="documents/Images/OpenChessSet_Arnold_01.png" />
![The Open Chess Set rendered in Arnold for Maya](https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/OpenChessSet_Arnold_01.png)

**Figure 4:** The Open Chess Set, rendered in Karma XPU for Houdini
<img src="documents/Images/OpenChessSet_Karma_01.png" />
![The Open Chess Set rendered in Karma XPU for Houdini](https://raw.githubusercontent.com/AcademySoftwareFoundation/MaterialX/main/documents/Images/OpenChessSet_Karma_01.png)

### Pre-Built Binaries
## Pre-Built Binaries

The following packages contain pre-built binaries for the latest release, including the MaterialX viewer, Python libraries, and example assets:

- [Microsoft Windows (Visual Studio 2022, Python 3.12)](https://github.com/AcademySoftwareFoundation/MaterialX/releases/latest/download/MaterialX_Windows_VS2022_x64_Python312.zip)
- [MacOS (Xcode 15, Python 3.12)](https://github.com/AcademySoftwareFoundation/MaterialX/releases/latest/download/MaterialX_MacOS_Xcode_15_Python312.zip)
- [Linux (GCC 14, Python 3.12)](https://github.com/AcademySoftwareFoundation/MaterialX/releases/latest/download/MaterialX_Linux_GCC_14_Python312.zip)

### Additional Resources
## Additional Resources

- The [Developer Guide](http://www.materialx.org/docs/api/index.html) contains a developer-oriented overview of MaterialX with API documentation.
- The [Python Scripts](python/Scripts) folder contains standalone examples of MaterialX Python code.
Expand Down
35 changes: 18 additions & 17 deletions documents/DeveloperGuide/GraphEditor.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,30 @@

The MaterialX Graph Editor is an example application for visualizing, creating, and editing MaterialX graphs. It utilizes the ImGui framework as well as additional ImGui extensions such as the Node Editor.

### Example Images
## Example Images

**Figure 1:** MaterialX Graph Editor with procedural marble example
<img src="/documents/Images/MaterialXGraphEditor_Marble.png" />

## Building The MaterialX Graph Editor
![MaterialX Graph Editor with procedural marble example](https://github.com/AcademySoftwareFoundation/MaterialX/raw/main/documents/Images/MaterialXGraphEditor_Marble.png)

## Building the MaterialX Graph Editor
Select the `MATERIALX_BUILD_GRAPH_EDITOR` option in CMake to build the MaterialX Graph Editor. Installation will copy the **MaterialXGraphEditor** executable to a `/bin` directory within the selected install folder.

### Summary of Graph Editor Features
## Summary of Graph Editor Features

1. **Load Material**: Load a material document in the MTLX format.
2. **Save Material**: Save out a graph as a mterial document in MTLX format.
3. **New Material**: Clear all information to set up for the creation of a new material
4. **Node Property Editor**: View or edit properties of the selected node.
5. **Render View**: View the rendered material.
1. **`Load Material`**: Load a material document in the MTLX format.
2. **`Save Material`**: Save out a graph as a mterial document in MTLX format.
3. **`New Material`**: Clear all information to set up for the creation of a new material
4. **`Node Property Editor`**: View or edit properties of the selected node.
5. **`Render View`**: View the rendered material.

### Buttons
## Buttons

To display a new material and graph, click the `Load Material` button and and navigate to the [Example Materials](../../resources/Materials/Examples) folder, which contains a selection of materials in the MTLX format, and select a document to load. The Graph Editor will display the graph hierarchy of the selected document for visualization and editing.
To display a new material and graph, click the `Load Material` button and and navigate to the [Materials/Examples](https://github.com/AcademySoftwareFoundation/MaterialX/tree/main/resources/Materials/Examples) folder, which contains a selection of materials in the MTLX format, and select a document to load. The Graph Editor will display the graph hierarchy of the selected document for visualization and editing.

To save out changes to the graphs as MTLX files click the `Save Material` button. This will save the position of the nodes in the graph for future use as well.

### Editor Window
## Editor Window

The MaterialX document is displayed as nodes in the Editor window. When a file is intially loaded the material node, surface shader node, and any enclosing nodegraphs will be displayed. Double-clicking on a nodegraph, or any node defined as a subgraph, will display the contents of that graph.

Expand All @@ -40,19 +41,19 @@ Another type of node present in the `Add Node` pop-up is the group, or backgroun

To search the editor window for a specific node use `CTRL` + `F` to bring up the search bar.

### Node Property Editor
## Node Property Editor
When a node is selected in the graph, its information is displayed on the left-hand column in the `Node Property Editor`. This editor displays the name of the node, its category, its inputs, the input name, types and values. Inputs that are connected to other nodes will not display a value.

This is where a node's properties such as its name and input values can be adjusted. When an input value is changed the material is automatically updated to reflect that change. The node info button displays the `doc` string for the selected node and its inputs if they exist. This `doc` string is currently read only.

The show All Inputs checkbox displays all possible inputs for a node. With the box unchecked only inputs that have a connection or have had a value set will be shown. Only these inputs will be saved out when the graph is saved.

### Render View
## Render View
Above the `Node Property Editor`, the `Render View` displays the current material on the Arnold Shader Ball. If inside a subgraph it will display the material associated with that subgraph; otherwise it will display the output of the selected node. It automatically updates when any changes are made to the graph.

To adjust the relative sizes of the Node Property Editor and Render View windows, drag the separator between these windows in the application. The render view window camera can be changed using the left or right mouse buttons to manipulate the shader ball.

### Keyboard Shortcuts
## Keyboard Shortcuts

- `TAB`: Add Node Popup
- `Right Click`: pan along the editor
Expand All @@ -66,7 +67,7 @@ To adjust the relative sizes of the Node Property Editor and Render View windows
- `+` : Zoom in with the camera when mouse is over the Render View Window.
- `-` : Zoom out with the camera when mouse is over the Render View Window.

### Command-Line Options
## Command-Line Options

The following are common command-line options for MaterialXGraphEditor, and a complete list can be displayed with the `--help` option.
- `--material [FILENAME]` : Specify the filename of the MTLX document to be displayed in the graph editor
Expand All @@ -75,7 +76,7 @@ The following are common command-line options for MaterialXGraphEditor, and a co
- `--library [FILEPATH]` : Specify an additional data library folder (e.g. 'vendorlib', 'studiolib'). This relative path will be appended to each location in the data search path when loading data libraries.
- `--captureFilename [FILENAME]` : Specify the filename to which the first rendered frame should be written

### Known Limitations
## Known Limitations

- Creating new connections using the `channels` attribute of an input is not yet supported, though existing `channels` connections will be displayed in graphs.
- Assigning a new `colorspace` attribute to an input is not yet supported, though existing `colorspace` attributes on inputs will be respected by the render view.
Loading