Inspired by wonderful demos1 made by Bartosz Ciechanowski, and a great paper2 written by Ken Shoemake, this is a nice little tool for someone who like to create 3D models with CSS transform.
Go to the Home page.
![arc-ball-demo-0](https://private-user-images.githubusercontent.com/1435457/329192874-b7b86f36-229f-4a0b-a8a7-17d699b49e79.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0MjUxMDQsIm5iZiI6MTczOTQyNDgwNCwicGF0aCI6Ii8xNDM1NDU3LzMyOTE5Mjg3NC1iN2I4NmYzNi0yMjlmLTRhMGItYThhNy0xN2Q2OTliNDllNzkucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTNUMDUzMzI0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZGM5YjI1MDU3ZjE5OTU3MDA0OWI2YzNmODdkZmY4ZjBhZjk0MGIyZGQ2YTM5NTM5MzAzMDU0NDAwYTAyNGVlZCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.E_fe0Zl_bmK5WKRJCB2R3Wrb3VgpcfFzhKkOPfJIh0s)
![arc-ball-demo-3](https://private-user-images.githubusercontent.com/1435457/329453574-18164a91-254c-4a88-9f3d-e4d0101e15d2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0MjUxMDQsIm5iZiI6MTczOTQyNDgwNCwicGF0aCI6Ii8xNDM1NDU3LzMyOTQ1MzU3NC0xODE2NGE5MS0yNTRjLTRhODgtOWYzZC1lNGQwMTAxZTE1ZDIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTNUMDUzMzI0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZjQ3ZTM5MDdjNWFlZmQ1MDViM2VmNTNkZGQ2YTg4ZGQ3OTBjZDdiYzczOGNlYjY3MGM1YjIwMmRmMGJmZjQ5MCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.aMds0uhrbBeygMAQfXE_CApzjOQ3-3oG2SEkS6Lr07g)
![arc-ball-demo-4](https://private-user-images.githubusercontent.com/1435457/329453585-fe8eac0f-db47-4f2c-a46a-e55ad6146010.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0MjUxMDQsIm5iZiI6MTczOTQyNDgwNCwicGF0aCI6Ii8xNDM1NDU3LzMyOTQ1MzU4NS1mZThlYWMwZi1kYjQ3LTRmMmMtYTQ2YS1lNTVhZDYxNDYwMTAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTNUMDUzMzI0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YWVmNTIxNWI5NWM0ZjJkMTVhYTBjM2VhNzI3NWIyNWU0NjJmMjQwOGM4YWFhMjY2ZThhNDcyYmFjNjU5N2IxYiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.79CDWmHyU7upbZ19i8iOn3fGDtmsN2Cvq4W2xOtlDYg)
![arc-ball-demo-2](https://private-user-images.githubusercontent.com/1435457/329192888-f317ecd2-b6e0-43ff-8f74-8ab6e878b321.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0MjUxMDQsIm5iZiI6MTczOTQyNDgwNCwicGF0aCI6Ii8xNDM1NDU3LzMyOTE5Mjg4OC1mMzE3ZWNkMi1iNmUwLTQzZmYtOGY3NC04YWI2ZTg3OGIzMjEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTNUMDUzMzI0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MGMwZTBhMzc0MWUwMWIwNDQ5N2QwZTVlN2NlYjgxZDlhMTJkNTY4NmMxMGQ2ZWE1NzA4N2Q5ZmQ4NTliMTgzMSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.eiOnENOuevbVpoF31q3vkrJA7tE6yk9jQ2sbKhLnd_A)
![arc-ball-demo-1](https://private-user-images.githubusercontent.com/1435457/329192883-66f0ed72-934e-40d0-8f7d-f67140cdfde8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0MjUxMDQsIm5iZiI6MTczOTQyNDgwNCwicGF0aCI6Ii8xNDM1NDU3LzMyOTE5Mjg4My02NmYwZWQ3Mi05MzRlLTQwZDAtOGY3ZC1mNjcxNDBjZGZkZTgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTNUMDUzMzI0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ODA1OWVlOTM0MGViODI2YjE2NTNlMmViNzNjYmY0MWRjY2E0M2YzMDEzNjk3NDE0MTI2OGFlNzI3ZTlmYmY3MyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.kGeTzqwUGUolRPP7sfyufPXX4-fQTy1vcZQCTT9VLlw)
![arc-ball-demo-5](https://private-user-images.githubusercontent.com/1435457/330654189-eec3250f-471f-47b2-8cd6-c39057e1f567.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0MjUxMDQsIm5iZiI6MTczOTQyNDgwNCwicGF0aCI6Ii8xNDM1NDU3LzMzMDY1NDE4OS1lZWMzMjUwZi00NzFmLTQ3YjItOGNkNi1jMzkwNTdlMWY1NjcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxMyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTNUMDUzMzI0WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YjZlMzBkYjZjNGRlOTgyMjE1NmI4ZTg3OTQzNjI4MzJjMDQzNjYxNTZjMWY2MWY4OTc2MTRkMGM0MmI5NDU2MyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.zx5kAc7czn2ixU_zSO1or0OrDW0lQM900kGu1YwzrJ0)
Include via CDN(e.g. unpkg) or Download a copy
<script src="https://unpkg.com/@9am/arc-ball/dist/index.min.js"></script>
<arc-ball>
<section>preserve-3d CSS transform elements or anything you want</section>
</arc-ball>
<arc-ball>
<!-- built-in xyz axis indicator -->
<arc-ball-axis></arc-ball-axis>
</arc-ball>
<arc-ball>
<!-- this'll not include by the arcball -->
<section slot="escape">escape the 3d control</section>
</arc-ball>
<arc-ball>
<!-- built-in stl renderer -->
<arc-ball-stl src="/* stl JSON */"></arc-ball-stl>
</arc-ball>
Or import the ESM version
<script type="module">
import 'https://unpkg.com/@9am/arc-ball/dist/index.es.js';
</script>
Or install via npm
npm install @9am/arc-ball
width
height
and perspective
can be controlled by the style of the <arc-ball>
element.