AssetSnap-Godot
AssetSnap-Godot copied to clipboard
Addon which adds a asset placement library in the bottom of the editor, that allows libraries(folders) of objects to be added, going to the library then allows you to preview and place them using vari...
AssetSnap
Asset placement toolkit for Godot 4 Mono
Docs comming soon »
Example Project (Soon)
·
Report Bug
·
Request Feature
Table of Contents
-
About The Project
- Built With
-
Getting Started
- Prerequisites
- Installation
- Usage
- Roadmap
- Contributing
- License
- Contact
- Acknowledgments
About The Project
This toolkit was started as a way for me to give my nephew an easier entry in to game development, more specifically 3D game development. This toolkit essentially aims to statisfy all the level building needs that you might have. And if it does not yet do this, please post an issue and we will see on how we can fit your need into the calculation. It is a work in progress, so bugs still might occur. Therefore usage in professional environment should still be cautious. Will update this part of the text when the product is polished enough for a professional usage case.
The plugin is quite extensive already, but below you can get a heads up about the overall functionality that it provides below. And then i can only recommend to download it and try it out. It is after all completely free - and i would love the feedback.
Groups
Currently it allows for the creation of Groups, which are groups of 3D objects that have their positions defined in local space. Which allows for building a house as an example with modular blocks and then easily use it again, or duplicate an earlier house, change 1 block and use that.
Persistency
Groups inner structure are persistent, meaning if you change an group 3D object origin, rotation or scale it will instantly be updated on all instances of that group. This does not count for things like default collisions and more that are set when you spawn your group.
3D Preview
Preview your creation in a 3D Preview environment while you are building it. Allowing you to fly around your 3D object to ensure all the details are as they need to be.
Libraries
Create libraries that houses a folder and all of it 3D models, allowing you to search, place, and perform various actions on the models when placing them in the 3D world.
Add and remove libraries
You can add and remove libraries easily from the main page of the tab "Assets"
Placement Modes
Simple placement mode
Use to place mesh instances, this is mainly for fewer spawns and where you need certain things to have a certain script and such.
Advanced placement mode
Use to place multi meshes, in configureable chunks. Which allows for a more optimized end result when you are spawning alot of objects.
Continuos placement
Fast placement of many objects with continous placement, which relieves you from the task of having to select the item again and again. All you have to do is hold alt + shift.
Drag path placement
Drag a path and spawn a configureable amount using an offset to control the total spawn amount.
Plane Snapping
Snap to planes on the X,Y and Z Axis, the axis boundary can be configured to match the needs you have for the task.
Object Snapping
Snap to other placed 3D objects in the 3D world as long as they have been spawned with the same spawn layer as the object you are spawning.
Auto collisions
Easy auto collisions for your objects when you space them, or change them afterwards directly while the object is in focus.
Grab already placed objects
By holding shift + alt and clicking A you can grab up already placed objects in the world, making it an ease to pick them up and move them to their new place.
Inspector
Ability to keep an eye on the states, this is mainly usefull when things don't work.. So let's hope it does not need to be used.
Modifiers
Ability to convert Mesh instances into Scatter or Array Modifiers.
Scatter Modifier
Scatter an configureable amount of entries of an object in an specified radius with various of tools and optimizations to go with the modifier.
Array Modifier
Spawn an configureable array of objects with various of tools and optimizations to go with the modifier.
(back to top)
Built With
This plugin was build with Godot and for Godot.
Beside that Icons from HeroIcons have been used. And 3D objects from libraries from Here and Here has been used while building it, and is the 3D objects seen in the preview images.
(back to top)
Getting Started
Below you can find a detailed guide on how to download and install AssetSnap for your Godot 4.2 Mono project. If you rather get going quickly you can also download a free example project with AssetSnap already setup from here
Prerequisites
Godot 4.2 Mono
- For Windows
https://godotengine.org/download/windows/ - For Linux
https://godotengine.org/download/linux/
Installation
Download your copy of AssetSnap by either downloading a zip of the current repository, Forking or Cloning the repository.
- Download Zip
- Click on the green button labeled
Code - Click on
Download Zip - Save the zip file at a place of your choice
- Unzip the zip file
- Copy the folder named Addons from within the new folder into your project
- Only for new projects Click on the
Projectmenu - Only for new projects Move your cursor to
Tools - Only for new projects Move your cursor to
C# - Only for new projects Click
Create C# Solution - Click on the hammer in the right corner to build your current solution
- Click on
Project, And click onProject Settings - Click on
Pluginin the top of the new window, and check theEnablecheckbox next to the plugin named AssetSnap - AssetSnap Should now work as expected
- Forking
- Explanation for this section is comming soong
- Cloning
- Explanation for this section is comming soong
(back to top)
Usage
For usage resources please either head to the Youtube Channel, where things will be posted on how to use various of things.
or wait for a bit longer until i get a documentation set up.
(back to top)
Roadmap
As of 0.1.1
- [x] Simple placement of objects using meshinstances
- [x] Optimized placement of objects using multimeshinstances
- [x] Auto collisions
- [x] Placement of pre defined groups of objects
- [X] Live preview of grouped objects while building
- [x] Continuous placement
- [x] Drag placement with offsetting
- [x] Object snapping on multiple layers
- [x] Plane Snapping
- [x] Library listing of objects with previews and search
- [x] Searchable library listing
- [x] Simple Settings control
- [x] Scatter modifier, that enables configureable scattering of an object
- [x] Array modifier, that enables configureable array spawn of an object
As of 0.1.2
- [x] Upgraded settings UI
- [X] Level of detail Control
- [X] Model visibility control
- [X] Better Decal UI
- [x] Better folder structure for components
- [x] Stability fixes
- [X] Most if not all code has been structured to follow the same pattern/standard
- [X] Better Library UI, and rotation of models
- [X] Better collision setup
- [X] Better model preview generator, that supports .FBX, .GLTF, .GLB and .Obj.
- [X] Toggleable model transparency when placing
As of 0.1.3
- [ ] Upgraded control around the preview of groups
- [ ] Upgraded UI in the group builder
- [ ] Optimization of code base, to make it more compact.
- [ ] And more
See the open issues for a full list of proposed features (and known issues).
(back to top)
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
(back to top)
License
Distributed under the MIT License. See LICENSE.txt for more information.
(back to top)
Contact
Mike Sørensen - @MikeSrensen19 - [email protected]
Project Link: https://github.com/misoe92/AssetSnap-Godot
(back to top)
Acknowledgments
For this project several of resources have been used, below you will find a link and description of the various items. None of the items beside HeroIcons can be found in the project when you download it.
Also a mention should go to Godot as well, for their free and awesome piece of software.
(back to top)