JSFiddle - React, Tailwind, and code Playground
by lighty1235
HTML
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/postprocessing.min.js"></script>
<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/postprocessing.min.js"></script>
<section class="main"></section>
CSS
:root {
--main-color: #ff6f69;
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:before, *:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*::-webkit-input-placeholder {
color: #666;
opacity: 1;
}
*:-moz-placeholder {
color: #666;
opacity: 1;
}
*::-moz-placeholder {
color: #666;
opacity: 1;
}
*:-ms-input-placeholder {
color: #666;
opacity: 1;
}
body input:focus:required:invalid,
body textarea:focus:required:invalid {
color: #666;
}
body input:required:valid,
body textarea:required:valid {
color: #666;
}
html, body {
height: 100%;
}
body {
font-size: 16px;
min-width: 320px;
position: relative;
line-height: 1.65;
overflow-x: hidden;
}
.img-responsive {
display: block;
max-width: 100%;
height: auto;
}
::selection {
background-color: #fff;
color: #fff;
}
a, a:hover, a:focus, a:active {
outline: none !important;
text-decoration: none;
color: #000;
}
.grid-container {
display: grid;
max-width: 1200px;
margin: 0 auto;
}
/*min-height:32vh;*/
section {
width: 100%;
height: 100vh;
display: grid;
justify-items: center;
}
JavaScript
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 45, window.innerWidth/window.innerHeight, 0.1, 1000 );
scene.background = new THREE.Color(0x130135);
import { BloomEffect, EffectComposer, EffectPass, RenderPass, ClearPass } from "postprocessing";
import { Clock } from "three";
let renderer = new THREE.WebGLRenderer({ });
renderer.setSize( window.innerWidth, window.innerHeight );
/* renderer.setClearColor(0xECF0F1); */
let doc = document.querySelector('.main');
doc.appendChild( renderer.domElement );
window.addEventListener('resize', function () {
let width = window.innerWidth;
let height = window.innerHeight;
renderer.setSize(width,height);
camera.aspect = width / height;
camera.updateProjectionMatrix();
});
let controls = new THREE.OrbitControls(camera,renderer.domElement);
const geometry1 = new THREE.SphereGeometry( 5, 32, 32 );
const material1 = new THREE.MeshBasicMaterial({ color: "red", wireframe: false,});
const material2 = new THREE.MeshBasicMaterial({ color: "red", wireframe: false});
const mesh = new THREE.Mesh(geometry1,material1);
scene.add(mesh);
const composer = new EffectComposer(renderer);
composer.addPass(new RenderPass(scene, camera));
composer.addPass(new EffectPass(camera, new BloomEffect({
luminanceThreshold: 0.0,
luminanceSmoothing: 0.0,
height: 100
})));
const clock = new Clock();
camera.position.z = 20;
const animate = function () {
requestAnimationFrame( animate );
controls.update();
composer.render(clock.getDelta());
renderer.render( scene, camera );
};
animate();