Chris Santora 14d2e38b90 Refactored how model material slots work in preparation to support more flexible material conversion options for the scene asset pipeline. The material slot IDs are based on the MaterialUid that come from SceneAPI. Since these IDs are also used as the AssetId sub-ID for the converted material assets, the system was just checking the material asset sub-ID to determine the material slot ID. But in order to support certain FBX material conversion options, we needed to break this tie, so the slot ID is separate from the AssetId of the material in that slot. This will allow some other material to be used in the slot, instead of being forced to use one that was generated from the FBX.
Here we inttroduce a new struct ModelMaterialSlot which formalizes the concept of material slot, with an ID, display name, and default material assignment. The ID still comes from the MaterialUid like before. The display name is built-in, rather than being parsed out from the asset file name. And the default material assignment can be any material asset, it doesn't have to come from the FBX (or other scene file).

This commit is just the preliminary set of changes. Cursory testing shows that it works pretty well but more testing is needed (and likely some fixes) before merging.

Here is what's left to do...
Add serialization version converters to preserve prior prefab data.
See if we can get rid of GetLabelByAssetId function only rely on the display name inside ModelMaterialSlot.
I'm not sure if the condition for enabling the "Edit Material Instance..." context menu item is correct.
Test actors
Lots more testing in general

Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-07-30 11:40:51 -07:00
2021-07-28 16:21:37 -05:00
2021-03-08 14:30:57 -08:00
2021-07-02 12:10:40 -07:00
2021-03-08 14:30:57 -08:00
2021-06-28 12:53:49 -07:00
2021-07-19 14:58:18 -05:00
2021-03-08 14:30:57 -08:00
2021-03-08 14:30:57 -08:00
2021-03-08 14:30:57 -08:00
2021-03-08 14:30:57 -08:00
2021-03-08 14:30:57 -08:00

Open 3D Engine

Open 3D Engine (O3DE) is an open-source, real-time, multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.

Contribute

For information about contributing to Open 3D Engine, visit https://o3de.org/docs/contributing/

Download and Install

This repository uses Git LFS for storing large binary files.

Verify you have Git LFS installed by running the following command to print the version number.

git lfs --version 

If Git LFS is not installed, download and run the installer from: https://git-lfs.github.com/.

Install Git LFS hooks

git lfs install

Clone the repository

git clone https://github.com/o3de/o3de.git

Building the Engine

Build Requirements and redistributables

Windows

Optional

  • Wwise version 2021.1.1.7601 minimum: https://www.audiokinetic.com/download/
    • Note: This requires registration and installation of a client application to download
    • Note: It is generally okay to use a more recent version of Wwise, but some SDK updates will require code changes
    • Make sure to select the SDK(C++) component during installation of Wwise
    • CMake can find the Wwise install location in two ways:
      • The LY_WWISE_INSTALL_PATH CMake cache variable -- this is checked first
      • The WWISEROOT environment variable which is set when installing Wwise SDK

Quick Start Build Steps

  1. Create a writable folder to cache 3rd Party dependencies. You can also use this to store other redistributable SDKs.

  2. Install the following redistributables to the following:

    • Visual Studio and VC++ redistributable can be installed to any location
    • CMake can be installed to any location, as long as it's available in the system path
  3. Configure the source into a solution using this command line, replacing and <3rdParty cache path> to a path you've created:

    cmake -B <your build path> -S <your source path> -G "Visual Studio 16" -DLY_3RDPARTY_PATH=<3rdParty cache path> -DLY_UNITY_BUILD=ON -DLY_PROJECTS=AutomatedTesting 
    

    Note: Do not use trailing slashes for the <3rdParty cache path>

  4. Alternatively, you can do this through the CMake GUI:

    1. Start cmake-gui.exe
    2. Select the local path of the repo under "Where is the source code"
    3. Select a path where to build binaries under "Where to build the binaries"
    4. Click "Configure"
    5. Wait for the key values to populate. Fill in the fields that are relevant, including LY_3RDPARTY_PATH and LY_PROJECTS
    6. Click "Generate"
  5. The configuration of the solution is complete. To build the Editor and AssetProcessor to binaries, run this command inside your repo:

    cmake --build <your build path> --target AutomatedTesting.GameLauncher AssetProcessor Editor --config profile -- /m
    
  6. This will compile after some time and binaries will be available in the build path you've specified

Setting up new projects

  1. While still within the repo folder, register the engine with this command:
    scripts\o3de.bat register --this-engine
    
  2. Setup new projects using the o3de create-project command.
    <Repo path>\scripts\o3de.bat create-project --project-path <your new project path>
    
  3. Register the engine to the project
    <Repo path>\scripts\o3de.bat register --project-path <New project path>
    
  4. Once you're ready to build the project, run the same set of commands to configure and build:
    cmake -B <your project build path> -S <your new project source path> -G "Visual Studio 16" -DLY_3RDPARTY_PATH=<3rdParty cache path>
    
    cmake --build <your project build path> --target <New Project Name>.GameLauncher --config profile -- /m
    

For a tutorial on project configuration, see Creating Projects Using the Command Line in the documentation.

License

For terms please see the LICENSE*.TXT file at the root of this distribution.

S
Description
Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.
Readme 150 MiB
Languages
C++ 82.6%
Python 13.1%
CMake 1.5%
Roff 1.2%
Lua 0.5%
Other 0.8%