I just updated a project from 4.13 to 4.14, but it will no longer package. The output log is full of this:
LogPhysics:Error: PHYSX: (D:\Build++UE4+Release-4.14+PhysX_Compile\Sync\Engine\Source\ThirdParty\PhysX\PhysX_3.4\Source\PhysXCooking\src\Cooking.cpp 198) eINVALID_PARAMETER : Cooking::cookConvexMesh: user-provided convex mesh descriptor is invalid!
Unfortunately, that does not give me much information to work with. Perhaps an asset needs to be saved? The error would be much more useful if it specified what asset triggered it.
What type of project is this, and was it upgraded from a previous engine version?
If so, go into your Unreal Projects folder and delete your Saved, Intermediate, and Config files/folders. New ones will be created when you re-open the project. I would make a copy of those files/folders first though.
Unless we have a way to reproduce this issue, there is not much in the way of reporting this as a bug. Let me know if you have additional questions.
As I have stated above, this was with a project updated from 4.13 to 4.14. Can you please have someone from the engine team look into where this error message is programmed and give some more information on it so I have some starting point in trying to find repro steps?
File descriptors indicate loading files to int variables. Thus your problem is either the mesh file is corrupted (and the cooker cant understand it or parse it), you are using a non mesh file descriptor for input in a function that takes in a file descriptor of a mesh file or this file does not exist and reference is broken. As far as i can understand from the error.
Well it says cookConvexMesh function so i think you should look for a mesh that simulates physics and it is a convex mesh. If you don’t know about convex meshes take a look here Convex Mesh Link
Ok so i did a little research inside unreal source and i found this. Which means that Ps::getFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__, "Cooking::cookConvexMesh: user-provided convex mesh descriptor is invalid!");
Should print the FILE which is the name of the file that the error accoutered and the LINE where the error is. But in your error between that there is no description after the eINVALID_PARAMETER.Which is really strange.
LogPhysics:Error: PHYSX: (D:\Build++UE4+Release-4.14+PhysX_Compile\Sync\Engine\Source\ThirdParty\PhysX\PhysX_3.4\Source\PhysXCooking\src\Cooking.cpp 198) eINVALID_PARAMETER : Cooking::cookConvexMesh: user-provided convex mesh descriptor is invalid!
bool Cooking::cookConvexMeshInternal(const PxConvexMeshDesc& desc_, ConvexMeshBuilder& meshBuilder, ConvexHullLib* hullLib,
PxConvexMeshCookingResult::Enum* condition)
{
if (condition)
*condition = PxConvexMeshCookingResult::eFAILURE;
if (!desc_.isValid())
{
Ps::getFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__, "Cooking::cookConvexMesh: user-provided convex mesh descriptor is invalid!");
return false;
}
if (mParams.areaTestEpsilon <= 0.0f)
{
Ps::getFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__, "Cooking::cookConvexMesh: user-provided convex mesh areaTestEpsilon is invalid!");
return false;
}
PxConvexMeshDesc desc = desc_;
bool polygonsLimitReached = false;
// the convex will be cooked from provided points
if (desc_.flags & PxConvexFlag::eCOMPUTE_CONVEX)
{
PX_ASSERT(hullLib);
PxConvexMeshCookingResult::Enum res = hullLib->createConvexHull();
if (res == PxConvexMeshCookingResult::eSUCCESS || res == PxConvexMeshCookingResult::ePOLYGONS_LIMIT_REACHED)
{
if (res == PxConvexMeshCookingResult::ePOLYGONS_LIMIT_REACHED)
polygonsLimitReached = true;
hullLib->fillConvexMeshDesc(desc);
}
else
{
if (res == PxConvexMeshCookingResult::eZERO_AREA_TEST_FAILED)
{
*condition = PxConvexMeshCookingResult::eZERO_AREA_TEST_FAILED;
}
return false;
}
}
if (desc.points.count >= 256)
{
Ps::getFoundation().error(PxErrorCode::eINTERNAL_ERROR, __FILE__, __LINE__, "Cooking::cookConvexMesh: user-provided hull must have less than 256 vertices!");
return false;
}
if (!meshBuilder.build(desc, mParams.gaussMapLimit, false, hullLib ? false : true))
{
return false;
}
if (condition)
{
*condition = polygonsLimitReached ? PxConvexMeshCookingResult::ePOLYGONS_LIMIT_REACHED : PxConvexMeshCookingResult::eSUCCESS;
}
return true;
}
I’m using 4.22 and I have encountered the same issue today. It is a mesh issue and it is resolved by recreated the collision for the mesh. Hope this would help.