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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MTEzMjIsIm5iZiI6MTczOTYxMTAyMiwicGF0aCI6Ii8xNDM1NDU3LzMyOTE5Mjg3NC1iN2I4NmYzNi0yMjlmLTRhMGItYThhNy0xN2Q2OTliNDllNzkucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMDkxNzAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NmZkY2Y2MDBjYTExZGNjMWRhM2FmZTAwYTY5MDYxNzU0MDBmZTNiNGNjMjRhZTI2MTM2ODg3Mzc3ZDNiYTI5OCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.zzvVMp-C3H5PrY3KWBbuhdvt-ept8fZGfmS5GS3Fidc)
![arc-ball-demo-3](https://private-user-images.githubusercontent.com/1435457/329453574-18164a91-254c-4a88-9f3d-e4d0101e15d2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MTEzMjIsIm5iZiI6MTczOTYxMTAyMiwicGF0aCI6Ii8xNDM1NDU3LzMyOTQ1MzU3NC0xODE2NGE5MS0yNTRjLTRhODgtOWYzZC1lNGQwMTAxZTE1ZDIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMDkxNzAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NjU2YjNlZTg4OTg1ZjZkYzAyMWIyYTBmOGYzMzg2NTcwNGRhYjE0NTEzY2ZjNmFiNDk4NGIzMTk4M2I4YzRhMSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.45ZHnKByZ8pI5E1VZDIfD3cqzhnXqplC5tWtkWQMngM)
![arc-ball-demo-4](https://private-user-images.githubusercontent.com/1435457/329453585-fe8eac0f-db47-4f2c-a46a-e55ad6146010.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MTEzMjIsIm5iZiI6MTczOTYxMTAyMiwicGF0aCI6Ii8xNDM1NDU3LzMyOTQ1MzU4NS1mZThlYWMwZi1kYjQ3LTRmMmMtYTQ2YS1lNTVhZDYxNDYwMTAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMDkxNzAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9N2U0MTMzMWVjZDM4MGVkNDYxODkxZmZiZTVjMDdhZjEwYTdkNTEzNmY0MzlmMmY5YjRhMzdkMzFmZWE1MTE4MCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.d4oPCjFNlfI-bj47R0dDxM9ENz4bea_ropUYyA4lYiw)
![arc-ball-demo-2](https://private-user-images.githubusercontent.com/1435457/329192888-f317ecd2-b6e0-43ff-8f74-8ab6e878b321.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MTEzMjIsIm5iZiI6MTczOTYxMTAyMiwicGF0aCI6Ii8xNDM1NDU3LzMyOTE5Mjg4OC1mMzE3ZWNkMi1iNmUwLTQzZmYtOGY3NC04YWI2ZTg3OGIzMjEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMDkxNzAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9N2Q3NTdmMWRhZGM2MjBkZGZkMTIwYjkzNjFlZDhkYTBlMWM2OTQzYmQ2MzVlYmZiNmQyNmI1MjdkNmI5Mjg0ZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.U22jN_ePz3Ob7VbrLpMMq2l4nKqj4OIkqtsHB2LFRdI)
![arc-ball-demo-1](https://private-user-images.githubusercontent.com/1435457/329192883-66f0ed72-934e-40d0-8f7d-f67140cdfde8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MTEzMjIsIm5iZiI6MTczOTYxMTAyMiwicGF0aCI6Ii8xNDM1NDU3LzMyOTE5Mjg4My02NmYwZWQ3Mi05MzRlLTQwZDAtOGY3ZC1mNjcxNDBjZGZkZTgucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMDkxNzAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YjgxNjU5ZjA3YjhiZTNmYjA0MjY3MTMwYWMyYmY2N2VhMGNmYjk5ZWZkZjQzOWVjMWJiZGQzYTZmMjk5ZDExZCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.mjwIiy54z4BncyCnliLBOxUBMxxxEoeH06AMHN7TI2U)
![arc-ball-demo-5](https://private-user-images.githubusercontent.com/1435457/330654189-eec3250f-471f-47b2-8cd6-c39057e1f567.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MTEzMjIsIm5iZiI6MTczOTYxMTAyMiwicGF0aCI6Ii8xNDM1NDU3LzMzMDY1NDE4OS1lZWMzMjUwZi00NzFmLTQ3YjItOGNkNi1jMzkwNTdlMWY1NjcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDIxNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTAyMTVUMDkxNzAyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YjgwZTY0YWU3MDhjNjQ0MTdlMDM3YjdhYWRhYjdiNjFiZjNiMThiYjc3M2Q4ZDVlNWIzZGFiYTA2NjkxZDQzZSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.iqgqjzIeXpZnCe8xzidJgpXyvH5-Y-ReHd71xPMzbHw)
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.