Commit Graph

59 Commits (33cbc2db219cb77d088cb15c1774c86d9b1be9aa)

Author SHA1 Message Date
Esteban Papp 3522f622f3 more castings
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
4 years ago
Benjamin Jillich 5c90bc0d58
Skip blend shapes that influence multiple meshes (#3009)
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
4 years ago
pappeste 41a1cb58cf SceneProcessing
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
4 years ago
Benjamin Jillich a3712b5564
TSpace setting for MikkT tangent generation (#2386)
* Added TSpace method setting which is only visible for MikkT generation.
* Fixed a bug with generating tangents for blend shapes.
* Renamed tangent space into generation method.
* Some code cleaning

Signed-off-by: Benjamin Jillich <jillich@amazon.com>
4 years ago
Chris Burel 1e10ee61ba
[MeshOptimizer] Return the correct size from the position map when there are blendshapes (#2391)
The previous version returned the incorrect size from the position map when
blendshapes are present in the model. When there are blendshapes, the
vertex welding is disabled, and nothing is inserted into the position map.
However, the position map's size was being used to dictate how many
elements to create in the skinning info. The skinning info tries to
compensate for an incorrect max vertex index by resizing its underlying
vector when adding an influence, but that was using the index as the new
size of the vector, so it was off by one. This fixes both errors.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Benjamin Jillich dbe6bb673e
Merge pull request #2277 from aws-lumberyard-dev/burelc/LYN-4490
[MeshOptimizer] Weld nearby vertices when optimizing meshes
4 years ago
Benjamin Jillich 001aa96fae
Merge pull request #2299 from aws-lumberyard-dev/jillich/TangentsGeneration
MikkT tangent generation support
4 years ago
Benjamin Jillich d987c45072 MikkT tangent generation support
* Default setting when no tangents rule: MikkT tangents.
* Calculates tangents/bitangents for all available uv sets.
* Creates tangent/bitangent data in in case they are not existing yet (as in: the source scene contains tangents/bitangents)
* Overwrites the tangent/bitangent data from the source scene in case MikkT is wished.
* Added helper functions to create tangent/bitangent scene nodes, finding tangent/bitangent data for a given uv layer and calculating the number of uv layers provided by the mesh scene node.

Signed-off-by: Benjamin Jillich <jillich@amazon.com>
4 years ago
AMZN-stankowi 69b5c04b7f
Cleared m_scriptFilename between scene files. (#2278)
This fixes a bug where a Python script file would be run on a scene file
that didn't have a script file set.
Added a general case version to SceneBuilderWorker.cpp, to make it easy
to mark all scene files as dirty.
Automated tests for this will come in a separate pull request.

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>
4 years ago
Chris Burel 2355581d79 Replace Array2D with vector<vector<>>
The thought behind Array2D was that it would be more efficient from a
memory allocation perspective to have one fixed buffer that grows than
it would be to have a vector of vectors. In reality, the runtime of
inserting into the middle of one large buffer, and shifting all the
resulting elements, ends up far outweighing any memory allocation
overhead.

In the mesh optimizer, things are added to the end of each sub-vector
one by one. It isn't known up front how many elements each sub-vector
will have. With vertex welding enabled, it is far more likely that a
given vertex will be influenced by a large number of joints. When using
the Array2D to store the influences, and a vertex with a low index has
more than 4 influences, those influences have to be inserted into close
to the front of the big vector, and all the other elements shifted.
Array2D was doing this with a linear shift, shifting the elements by 1
at a time, and not providing any exponential growth on the amount of
elements reserved by each sub-vector. The result is a linear insertion
time.

By contrast, using vector<vector<Influence>> instead gives us back the
amortized constant insertion time. Since the skin influences are just
added to the end of each sub-vector, no shifting of the elements is
necessary. And since the amount of original vertex indices is known up
front, the number of sub-vectors can still be pre-created, so the
sub-vectors themselves never need to shift.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Benjamin Jillich 2b89d9d563 MikkT generator fills given tangent data rather than creating a new scene node
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
4 years ago
Chris Burel 9ea46bad83 Supply the vertex index remapping to the optimized skin weights
This ensures that the optimized skin weights use the vertex indexes from
the optimized mesh

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel 7bcd4baec4 Use a bunch of temporaries in order to make `position` `const`
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel 70a8214c2d Add logging call to show mesh optimizer effect on vertex count
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel 8702f0cd2e Add test for the mesh optimizer's ability to weld nearby vertices
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel 38046bd0c9 Don't attempt to weld similar vertices if there's blendshapes
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel cbb4778ef5 Use a filter view instead of reimplementing a filter view
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Chris Burel e4e1946018 Determine the original vertex index based on the position
The Assimp library does not expose the FBX control point indices. This
change causes vertices that are close enough in their position to be
considered as coming from the same control point. This allows the mesh
optimizer to consider vertices with the same control point index (or
"original vertex index" as it is called in the code) for deduplication.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Steve Pham 38261d0800
Shorten copyright headers by splitting into 2 lines (#2213)
* Updated all copyright headers to split the longer original copyright line into 2 shorter lines

Signed-off-by: Steve Pham <spham@amazon.com>
4 years ago
hultonha 5a0c1fab9f Merge remote-tracking branch 'upstream/development' into hultonha_LY-69118_lambda_crash
Signed-off-by: hultonha <hultonha@amazon.co.uk>
4 years ago
Benjamin Jillich 0863a24490
Revert "[MeshOptimizer] Determine the original vertex index based on the position (#2008)" (#2188)
This reverts commit a077a88d3f due to assets failing on Jenkins.

Signed-off-by: Benjamin Jillich <jillich@amazon.com>
4 years ago
hultonha 2c9922d4b5 Merge remote-tracking branch 'upstream/development' into hultonha_LY-69118_lambda_crash 4 years ago
Chris Burel a077a88d3f
[MeshOptimizer] Determine the original vertex index based on the position (#2008)
* Determine the original vertex index based on the position

The Assimp library does not expose the FBX control point indices. This
change causes vertices that are close enough in their position to be
considered as coming from the same control point. This allows the mesh
optimizer to consider vertices with the same control point index (or
"original vertex index" as it is called in the code) for deduplication.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Use a filter view instead of reimplementing a filter view

Signed-off-by: Chris Burel <burelc@amazon.com>

* Don't attempt to weld similar vertices if there's blendshapes

Signed-off-by: Chris Burel <burelc@amazon.com>

* Add test for the mesh optimizer's ability to weld nearby vertices

Signed-off-by: Chris Burel <burelc@amazon.com>

* Add logging call to show mesh optimizer effect on vertex count

Signed-off-by: Chris Burel <burelc@amazon.com>

* Use a bunch of temporaries in order to make `position` `const`

Signed-off-by: Chris Burel <burelc@amazon.com>

* Supply the vertex index remapping to the optimized skin weights

This ensures that the optimized skin weights use the vertex indexes from
the optimized mesh

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
rgba16f e32b7a7c87
Mac m1 fixes (#2150)
* Update the Mac Editor plist application bundle identifier to be different than Lumberyard
Fix the editor to have runtime dependencies on the scene modules.

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>

* Fix Metal RHI calling unsupported timestamp query api on M1 Macs.
Add Query for Timestamps supported on device initialization.

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>

* Remove AZ::Scene* runtime dependencies from EmotionFX gem and add AZ::SceneUI as a runtime dependency of SceneProcessing::Editor module.

Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>
4 years ago
hultonha f8a80468ab remove structured binding from lambda to workaround msvc bug
Signed-off-by: hultonha <hultonha@amazon.co.uk>
4 years ago
Benjamin Jillich 2ab2503337
Revert "[MeshOptimizer] Determine the original vertex index based on the position (#1562)" (#1902)
This reverts commit ef1f95f1d0.

Signed-off-by: Benjamin Jillich <jillich@amazon.com>
5 years ago
Chris Burel ef1f95f1d0
[MeshOptimizer] Determine the original vertex index based on the position (#1562)
* Determine the original vertex index based on the position

The Assimp library does not expose the FBX control point indices. This
change causes vertices that are close enough in their position to be
considered as coming from the same control point. This allows the mesh
optimizer to consider vertices with the same control point index (or
"original vertex index" as it is called in the code) for deduplication.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Use a filter view instead of reimplementing a filter view

Signed-off-by: Chris Burel <burelc@amazon.com>

* Don't attempt to weld similar vertices if there's blendshapes

Signed-off-by: Chris Burel <burelc@amazon.com>

* Add test for the mesh optimizer's ability to weld nearby vertices

Signed-off-by: Chris Burel <burelc@amazon.com>

* Add logging call to show mesh optimizer effect on vertex count

Signed-off-by: Chris Burel <burelc@amazon.com>

* Use a bunch of temporaries in order to make `position` `const`

Signed-off-by: Chris Burel <burelc@amazon.com>
5 years ago
AMZN-stankowi 0c43493e29
FBX to Scene part 3, tangent generation rule FBX -> SourceScene (#1747)
* Tangent space FromFBX -> FromSourceScene

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>
5 years ago
AMZN-stankowi 73522e90c9
FBX -> Scene, part 2. Code changes, file renames (#1704)
* First pass FBX -> Scene File conversion.
This is the simple pass, minimizing code changes and focused on comments.

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>

* Step 1 of part 2 of the FBX -> Scene rename

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>

* Renaming FbxSceneBuilder folder to SceneBuilder

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>

* Renamed files

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>

* More FBX -> Scene

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>
5 years ago
AMZN-stankowi 4c4be73bd5
First pass FBX -> Scene File conversion. (#1699)
This is the simple pass, minimizing code changes and focused on comments.

Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com>
5 years ago
Steve Pham b4a2edec6a
Final update copyright headers to reference license files at the repo root (#1693)
* Final update copyright headers to reference license files at the repo root

Signed-off-by: spham <spham@amazon.com>

* Fix copyright validator unit tests to support the stale O3DE header scenario

Signed-off-by: spham <spham@amazon.com>
5 years ago
Steve Pham 70042fcdcd
O3DE Copyright Updates for Linux Foundation (#1504) 5 years ago
lumberyard-employee-dm 7dabe8b6e9
Updated Several Engine Gem's CMakeLists.txt to add themselves as required Gems (#1262)
* Fixed organization of the AssetProcessor SourceAssetBrowser

Assets within the Engine Root were grouped under a '/' entry.
That has been fixed to use the relative path within the engine root for
those assets
Assets outside of the Engine Root, but on the same drive were using
absolute paths before. Now there are child entries that navigate up the
directory hierarchy to those asset locations

* Added ly_enable_gems call to Atom gems targets that are required

The DefaultLevel.prefab contains several Atom components, that require
the Atom RHI, RPI, Common_Feature, ShaderBuilder and AtomLyIntegration CommonFeatures
gems to be enabled in order to successfully process in the
AssetProcessor.

* Added ly_enable_gems call to make the Camera gem required in Tools,
Builders and Clients.

This is needed as the DefaultLevel.prefab contains an Editor Camera
Component

* Adding the ly_enable_gem call to make the Maestro gem required

CrySystem currently requires Maestro to be enabled in order to
initialize

* Added ly_enable_gems call to the SceneProcessing gem to make it required

The SceneCore and SceneData libraries that are part of the core engine
Code folder requires the SceneProcessing gem to be enabled in order to
invoke the InitializeDynamicModule hooks in DllMain.cpp in order to
initialize those libraries.

* Fixed bad argument in comment for Prefab CMakeLists.txt

* Fixed Assert in Asset Builders due to the Atom RPI Builder

The Atom RPI Builder was enabling the Asset Catalog for the ScriptAsset a second time

The Atom Feature Common EditorSystemCommonComponent.cpp which also loads
in the AssetBuilder is enabling the Asset Catalog for the ScriptAsset

Added BehaviorContext reflection to the OutputDeviceTransformType enum
to fix the BehaviorContext errors about reflecting a method that returns
such an enum

* Added TypeId output to the JsonDeserializer report message about missing
ClassData

Previously the report callback would indicate that the target type was
missing Serialization class data, but didn't indicate the TypeId of the
target type

* Added support to the ly_enable_gems function to be able to support
0 gems being enabled.

Updated the Install step for CMake to propagate any ly_enable_gems
within a CMakeLists.txt for a target into the generated CMakeLists.txt
that is made for each installed IMPORTED target

* Adding newline to the end of the Camera Gem CMakeLists.txt

* Fixing target TYPE parameter for actual Gem Modules to use the GEM_MODULE tag instead of MODULE

* Reverting change to the DESTINATION directory for the installed CMakeLists.txt to use the relative path to the installed directory

* Adding the Atom_Bootstrap gem as a required gem

The Client and GameLaunchers required the Atom_Bootstrap gem in order to create the NativeWindow
Added Atom_Feature_Common client module as a runtime dependency of the AtomLyIntegration CommonsFeature client module

* Fixed register.py --all-projects-path and --all-gems-path arguments to
NOT register projects or gems that are within a template folder
Fixed reading of old pre-1.0 o3de_manifest.json files where the
"engines" key was a json array

* Changed how the relative target source directory is calculated when that source directroy resides outside of the engine root.
The final dirname component is used with a unique SHA256 has to form a <dirname>-<8 char SHA256> folder for installing files into

* Adding newline to the end of Atom_Bootstrap CMakeLists.txt

* Moving ly_enable_gems variants for Tools and Builders inside of PAL_TRAIT_BUILD_HOST_TOOLS block

* Adding a comment to AWSCore.ResourceMappingTool target to indicate that it is not a GEM_MODULE.
Furthermore it cannot be loaded with the Gem system because the library is in a different directory the executable
5 years ago
pappeste 01933f45b1 Merge branch 'main' into ly-as-sdk/LYN-2948
# Conflicts:
#	Gems/AtomLyIntegration/TechnicalArt/DccScriptingInterface/gem.json
5 years ago
pappeste f1b688f435 Merge branch 'main' into ly-as-sdk/LYN-2948
# Conflicts:
#	CMakeLists.txt
#	Code/Tools/ProjectManager/Source/GemCatalog/GemInfo.h
#	Gems/AtomLyIntegration/AtomViewportDisplayInfo/gem.json
#	cmake/LYWrappers.cmake
#	cmake/SettingsRegistry.cmake
#	scripts/o3de/tests/unit_test_current_project.py
5 years ago
AMZN-stankowi 9d94977b2c
FbxImportRequestHandler is now loaded only once per AssetBuilder and Editor + re-enabled STL support (#933)
* Revert "FBX settings can be opened again: g_fbxImporter is set, and if the ex… (#878)"

This reverts commit 58adcf168f.

* Revert "Merge pull request #753 from aws-lumberyard-dev/Helios_DataDrivenAssetImporter"

This reverts commit 798d96f1a2, reversing
changes made to eb31d90ad9.

* Revert "Revert "Merge pull request #753 from aws-lumberyard-dev/Helios_DataDrivenAssetImporter""

This reverts commit c1124f26d957388e88cc4990021314b5af247e1d.

* Revert "Revert "FBX settings can be opened again: g_fbxImporter is set, and if the ex… (#878)""

This reverts commit 978477097892a22e83519646527ff52ba6532f35.

* Fixed how FbxImportRequestHandler is loaded

* Bumped version to force FBX to rebuild + removed unused variable

* Revert "Revert "FBX settings can be opened again: g_fbxImporter is set, and if the ex… (#878)""

This reverts commit 978477097892a22e83519646527ff52ba6532f35.

* Revert "Revert "Merge pull request #753 from aws-lumberyard-dev/Helios_DataDrivenAssetImporter""

This reverts commit c1124f26d957388e88cc4990021314b5af247e1d.

* Fixed a bad revert

* Better error reporting at AP launch

* AZ_CRC -> AZ_CRC_CE and removed delayed reload of settings registry file now that it's available at startup

* fixed typo in comment
5 years ago
SJ 8ca3b078a2
Remove bootstrap.cfg and some references to it.
Merge pull request #836 from aws-lumberyard-dev/LYN-2461
5 years ago
lumberyard-employee-dm 4652d47fb3 Merge remote-tracking branch 'origin/lawsonamzn_prototype_gem_naming_conventions' into ly-as-sdk/LYN-2948-phistere 5 years ago
lumberyard-employee-dm 76fe7f3666 Merge branch 'main' of https://github.com/aws-lumberyard/o3de into ly-as-sdk/LYN-2948-phistere 5 years ago
pappeste 19adbf2f41 Removing adding runtime dependencies for gems that are in the BUILD_DEPENDENCIES 5 years ago
AMZN-stankowi 1da8c50e8e
Temporarily backing out STL changes to unblock mainline (#921)
* Revert "FBX settings can be opened again: g_fbxImporter is set, and if the ex… (#878)"

This reverts commit 58adcf168f.

* Revert "Merge pull request #753 from aws-lumberyard-dev/Helios_DataDrivenAssetImporter"

This reverts commit 798d96f1a2, reversing
changes made to eb31d90ad9.
5 years ago
amzn-sj 115f18fcdc Fix Linux test failures 5 years ago
Nicholas Lawson c9d5d7fb77 The new gem registration and usage system
Merge from mainline (Rebase)
5 years ago
amzn-mike 798d96f1a2
Merge pull request #753 from aws-lumberyard-dev/Helios_DataDrivenAssetImporter
[LYN-3689] AssImp: Data driven supported filetypes
5 years ago
AMZN-stankowi f779821ac0
Helios - LYN-3250 - Fixed morph targets for meshes that had multiple … (#696)
* Helios - LYN-3250 - Fixed morph targets for meshes that had multiple materials (#374)

Fixed morph targets for meshes that had multiple materials and were split by AssImp: Recombined them into one mesh in the O3DE scene graph, so the behavior would match FBX SDK.
5 years ago
amzn-mike 2b538c9921 Switch to using settings registry
# Conflicts:
#	Assets/Engine/Registry/assetimporter.setreg
5 years ago
AMZN-stankowi a7224b6379
Integrating github/Helios_RemoveFbxSdk through commit 6dc2604 (#391) (#560)
Removing FBX SDK, LYN-1045. If you have an issues please reach out to the Helios team.
5 years ago
Chris Burel 7f81602fe7
Use the material id from the base mesh when optimizing blend shapes (#517)
This is cherry-picked from #311

When processing meshes with blend shapes, the mesh optimizer disables the
optimize duplicates setting, to prevent potential vertex reodering that
could cause the base mesh vertices to become out of sync with the blend
shape. However, it will still reorder vertices based on their material.
It places all triangles that use the same material in the same submesh,
grouping them together in the resulting mesh. The SceneAPI does not track
material ids for blend shapes. To ensure that the blend shape triangles are
reordered in the same way as the base shape, this change makes the blend
shape optimization use the material id from the base shape.
5 years ago
bosnichd 1d4c483e73
Red code legacy renderer (#383)
- Remove some references to gEnv->pRenderer/GetIEditor()->GetRenderer() that is now always null.
- Restore the debug console to existence.
- Stop building the following in preparation for their removal:

Code/CryEngine/Cry3DEngine/*
Code/CryEngine/RenderDll/*
Code/Tools/CryFXC/*
Code/Tools/HLSLCrossCompiler/*
Code/Tools/HLSLCrossCompilerMETAL/*
Code/Tools/RC/*
Code/Tools/ShaderCacheGen/*
Tools/CrySCompileServer/*
5 years ago
Tommy Walton 991fb071a5 Add a wildcard source dependecy to the scene builder for wrinklemasks 5 years ago