βοΈβ‘ Twist Space is a powerful yet lightweight web application designed to display and manipulate 3D models in .glb format. Whether you're working on desktop or mobile, the app provides a seamless experience for viewing and interacting with 3D content.
MIT License
Twist Space is a web application that allows you to upload and interact with 3D models in .glb
format. You can rotate, zoom, and scale models, adjust brightness and other parameters. The app comes preloaded with a model of the character Ganyu.
.glb
format.React Three Fiber is a library that allows you to use Three.js with React. In Twist Space, it is used to render 3D scenes and interact with them. It makes it easy to manage 3D objects and animations using React's declarative approach.
TailwindCSS is a utility-first CSS framework that lets you quickly customize styles for your application. In Twist Space, TailwindCSS is used to customize the user interface, providing a convenient and flexible way to style elements.
Framer Motion is a library for creating animations in React, and Motion Three Fiber extends its capabilities to work with 3D objects. These tools are used in the project to create smooth animations and interactions with 3D models.
Wouter is a minimalist and lightweight router for React. It provides fast and easy-to-use routing, which is especially important for mobile devices and high-performance applications.
The control panel is located in the top-left corner of the screen and allows you to:
Twist Space is fully responsive and supports use on any deviceβfrom desktops to mobile phones. The interface and functionality are optimized to ensure smooth and convenient interaction regardless of screen size.
Here is the project file structure:
TwistSpace/
β
βββ node_modules/
βββ public/
βββ src/
β βββ Animation/
β βββ assets/
β β βββ Styles/
β β βββ _mixins.scss
β β βββ colors.scss
β β βββ global.scss
β β βββ Main.scss
β βββ components/
β β βββ Checkbox/
β β βββ ControlPanel/
β β β βββ AboutMe.tsx
β β β βββ ControlPanel.tsx
β β β βββ HiddenButton.tsx
β β β βββ RenderControl.tsx
β β βββ DefaultCanvas/
β β β βββ DefaultCanvas.tsx
β β βββ DragAndDrop/
β β β βββ DragAndDrop.tsx
β β β βββ fileUpload.ts
β β βββ RangeInput/
β β β βββ RangeInput.tsx
β β βββ RenderModel/
β β β βββ RenderModel.tsx
β βββ hooks/
β β βββ MousePosition/
β β βββ useMousePosition.ts
β βββ pages/
β β βββ ErrorPage/
β βββ store/
β βββ App.tsx
β βββ main.tsx
β βββ vite-env.d.ts
βββ .gitattributes
βββ .gitignore
βββ eslint.config.js
βββ index.html
To run the project locally, follow these steps:
Clone the repository:
git clone https://github.com/your-repo/TwistSpace.git
Navigate to the project directory:
cd TwistSpace
Install the dependencies:
npm install
Run the project in development mode:
npm run dev
To build the project, use:
npm run build
For a production preview of the build:
npm run preview
This project is licensed under the MIT License.
Research | Result | Comments |
---|---|---|
π Model Load Time | < 2 seconds | Using lightweight libraries. |
π± Mobile Performance | 60 FPS | Fully optimized for mobile. |
π Browser Support | 99% of browsers | Cross-browser compatibility. |
Here are some screenshots of the application: