Here is a link to a world creation Unity tutorial I made for people wanting to get started making worlds! Hope this helps.
I appreciate the effort of getting new people into vrc world creation.
But your flow is all over the place…
You download and install unity first and then download the sdk to then create a new project.
Wouldn’t it be less confusing for the viewer to install unity first, create a project and then download and import the files into the project?..
Also, double clicking to import it is a tad dangerous, unity has a tendency to get confused as to what the active project is. So it’s safer to drag and dropping the unitypackage onto unity rather than double clicking it.
Additionally, you want to use a box collider instead of a mesh collider, or tick the “convex” button.
Mesh colliders can be VERY resource intensive.
Aside from that, the things I’m missing that are bound to come up, even if it’s a beginner video:
- How to enable jumping (player mods)
- How to pick something up (vrc_pickup)
- Mirrors
- Reflection Probes
- Static lighting
The latter two are a bit more advanced for a beginner, but they’re pretty important for a beginner to know since they tie into optimization of worlds and making people not puke when in vr due to a low framerate.
Thank you for your feedback!
It’s good to know that box colliders work better than mesh colliders in terms of performance. This definitely is understandable - I just noticed many issues with convex box collision such as weirdly shaped collision that can hinder player mobility. A balanced mix of the two is probably best.
Also, didn’t realize Unity could have a potential problem with importing the SDK! Never had two instances of Unity open at the same time when doing that to discover it. Very good point! I will be sure to note that in the description too.
Good note on the flow thing! It was very rapid (which was the intention) and I’ll probably make another one more in-depth and slowed down in order from start to finish which includes all the other things in consideration that you mentioned from jumping to static lightning.
Any additional comments are appreciated and taken solely as constructive criticism!
The reason “convex” has odd behavior is because of the way it works.
Convex simplifies collision by making an invisible mesh around the object for the collision.
However, you can kind of see this like a shrink-wrap, since it has to approximate things it can run into issues. As such it’s best for round objects, or object that don’t intersect on themselves.
From unreal’s documentation:
As you can see, it’ll take the shortest path from the armrests to the back, which is a straight line rather than the curved which would be more “accurate”.
The way you should actually go around solving this can be done in two ways.
You can either use unreal’s approach and add multiple box colliders like this:
Which in most cases is the preferred way of doing it
But, another way of doing it is simply splitting the model into smaller pieces that can be properly convexed
Another useful thing to know, is if you want to see what the collision looks like in your world, to fix wonky collision issues, or see how horrible the mesh collider will make your performance would be to open the “physics debug” window under window → analysis → Physics Debug.
With this window open you’ll be able to see your colliders in a world
Changing your view to “shaded wireframe” will then allow you to easily see the polygons of a mesh.
The reason I discourage people from using mesh colliders, is because of this reason. With a mesh collider, you’re calculating collisions per polygon. Which granted, will be the most accurate result, but if you have a lot of polygons in a scene that’ll be a LOT of calculations it needs to do in a second.
As you can see, this roomba already has a good amount of collision points it needs to check.
While collision wise, there’s not a lot of interesting things happening. So, how do we solve it?
Simple, we use convex in this case, since there’s no sharp angles that’ll mess it up
As per the unity documentation:
The Mesh Collider builds its collision representation from the Mesh attached to the GameObject
, and reads the properties of the attached Transform to set its position and scale correctly. The benefit of this is that you can make the shape of the Collider exactly the same as the shape of the visible Mesh for the GameObject, which creates more precise and authentic collisions. However, this precision comes with a higher processing overhead than collisions involving primitive colliders (such as Sphere, Box, and Capsule), so it is best to use Mesh Colliders sparingly.
Key part is the last part. You can, in some instances use a mesh collider, but on average the primitive colliders, or multiple of them are a better replacement.