Fluid-mobius-2.1.1

Developer
Size
8,472 Kb
Views
16,192

How do I make an fluid-mobius-2.1.1?

Wrapping my head around quaternions and multi-pass shader effectscode for effect shaders taken from @mittense's https://codepen.io/mittense/project/details/ARwvjL. What is a fluid-mobius-2.1.1? How do you make a fluid-mobius-2.1.1? This script and codes were developed by Not Important on 16 November 2022, Wednesday.

Fluid-mobius-2.1.1 Previews

Fluid-mobius-2.1.1 - Script Codes HTML Codes

<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>fluid-mobius-2.1.1</title> <link rel="stylesheet" href="css/style.css">
</head>
<body> <div id="js-app"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.20.0/polyfill.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/86/three.min.js"></script>
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/292951/three.bas.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<!-- all of the following were taken from https://codepen.io/mittense/project/editor/ARwvjL/ -->
<script src="https://codepen.io/clindsey/pen/gxYmJd.js"></script> <!-- THREE.EffectComposer -->
<script src="https://codepen.io/clindsey/pen/eEOvwZ.js"></script> <!-- THREE.MaskPass -->
<script src="https://codepen.io/clindsey/pen/OjLper.js"></script> <!-- THREE.RenderPass -->
<script src="https://codepen.io/clindsey/pen/eEOvqZ.js"></script> <!-- THREE.ShaderPass -->
<script src="https://codepen.io/clindsey/pen/YxKZma.js"></script> <!-- THREE.UnrealBloomPass -->
<script src="https://codepen.io/clindsey/pen/NvKjKV.js"></script> <!-- THREE.ConvolutionShader -->
<script src="https://codepen.io/clindsey/pen/qXWmWX.js"></script> <!-- THREE.CopyShader -->
<script src="https://codepen.io/clindsey/pen/EvYmxW.js"></script> <!-- THREE.FXAAShader -->
<script src="https://codepen.io/clindsey/pen/dzbWyd.js"></script> <!-- THREE.FilmShader -->
<script src="https://codepen.io/clindsey/pen/OjLmJd.js"></script> <!-- THREE.LuminosityHighPassShader -->
<!-- <script>(function(){var script=document.createElement('script');script.onload=function(){var stats=new Stats();document.body.appendChild(stats.dom);requestAnimationFrame(function loop(){stats.update();requestAnimationFrame(loop)});};script.src='//rawgit.com/mrdoob/stats.js/master/build/stats.min.js';document.head.appendChild(script);})()</script> --> <script src="js/index.js"></script>
</body>
</html>

Fluid-mobius-2.1.1 - Script Codes CSS Codes

body { margin: 0; padding: 0; background-color: #000;
}
canvas { display: block; margin: 0 auto;
}

Fluid-mobius-2.1.1 - Script Codes JS Codes

'use strict';
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
setTimeout(function () { var loader = new THREE.JSONLoader(); loader.crossOrigin = 'Anonymous'; var mobiusRot = new MobiusRot(3, 291, 100, 31, 5); // tileSize, ringSize, radius, layers, twists new Simulation('js-app', [mobiusRot], 0, 0, -320);
}, 0);
var MobiusRot = function (_THREE$Mesh) { _inherits(MobiusRot, _THREE$Mesh); MobiusRot.createMaterial = function createMaterial(radius, size) { return new THREE.BAS.BasicAnimationMaterial({ shading: THREE.FlatShading, side: THREE.FrontSide, uniforms: { uTime: { value: 0 }, uRadius: { value: radius * 2 }, uSpacing: { value: new THREE.Vector3(size * 2, size * 2, size * 2) } }, uniformValues: {}, varyingParameters: ['varying vec3 vColor;'], vertexFunctions: [THREE.BAS.ShaderChunk['quaternion_rotation']], vertexParameters: ['uniform float uTime;', 'uniform float uRadius;', 'uniform vec3 uSpacing;', 'attribute vec4 aRotation;', 'attribute vec3 aVOffset;', 'attribute vec4 aTwist;', 'attribute vec4 aOrient;', 'attribute vec3 aColor;'], vertexInit: ['float timeScale = 0.333;', 'float seed = 5625463739.0;', 'float time = (uTime * timeScale);', 'vec4 tQuatRotation = quatFromAxisAngle(aRotation.xyz, aRotation.w + time);', 'vec4 tQuatOrient = quatFromAxisAngle(aOrient.xyz, aOrient.w + time);', 'vec4 tQuatTwist = quatFromAxisAngle(aTwist.xyz, aTwist.w + time);'], vertexNormal: [], vertexPosition: ['transformed += aVOffset * uSpacing;', // stack tiles into a column 'transformed = rotateVector(tQuatTwist, transformed);', // twist columns 'transformed = rotateVector(tQuatOrient, transformed);', // rotate column faces inwards 'transformed += rotateVector(tQuatRotation, vec3(uRadius, 0.0, 0.0));' // place columns in a large circle ], vertexColor: ['vColor = aColor;'], fragmentFunctions: [], fragmentParameters: [], fragmentInit: [], fragmentMap: [], fragmentDiffuse: ['diffuseColor.xyz = vColor;'] }); }; MobiusRot.assignProps = function assignProps(geometry, prefabCount, radius, layers, twists, verticalSpacing) { var aRotation = geometry.createAttribute('aRotation', 4); var aColor = geometry.createAttribute('aColor', 3); var aVOffset = geometry.createAttribute('aVOffset', 3); var aTwist = geometry.createAttribute('aTwist', 4); var aOrient = geometry.createAttribute('aOrient', 4); var ringSize = prefabCount / layers; for (var i = 0; i < prefabCount; i++) { var y = Math.floor(i / ringSize); var x = i % ringSize; var range = Math.PI * 2; var theta = THREE.Math.mapLinear(x, 0, ringSize, -range / 2, range / 2); var w = theta / 2 * twists; // place tiles in circle var position = new THREE.Vector3(Math.cos(theta), 0, Math.sin(theta)); geometry.setPrefabData(aRotation, i, [0, 1, 0, theta]); // stack the tiles vertically into columns var verticalOffset = new THREE.Vector3(0, Math.ceil(y / 2) * (y % 2 ? 1 : -1) / layers, 0); geometry.setPrefabData(aVOffset, i, verticalOffset.toArray()); // set lean geometry.setPrefabData(aTwist, i, [0, 0, 1, w]); // set orient geometry.setPrefabData(aOrient, i, [0, 1, 0, theta]); var color = new THREE.Color(); color.setHSL((theta + Math.PI) / (Math.PI * 2), 1.0, 0.5); geometry.setPrefabData(aColor, i, color.toArray()); } }; function MobiusRot(size, tileCount, radius, layers, twists) { _classCallCheck(this, MobiusRot); var prefabCount = tileCount * layers; var boxGeometry = new THREE.BoxGeometry(size, size, size); var geometry = new THREE.BAS.PrefabBufferGeometry(boxGeometry, prefabCount); geometry.computeVertexNormals(); geometry.bufferUvs(); MobiusRot.assignProps(geometry, prefabCount, radius, layers, twists, size); var material = MobiusRot.createMaterial(radius, size * layers); var _this = _possibleConstructorReturn(this, _THREE$Mesh.call(this, geometry, material)); _this.frustumCulled = false; return _this; } _createClass(MobiusRot, [{ key: 'time', get: function get() { return this.material.uniforms.uTime.value; }, set: function set(newTime) { this.material.uniforms.uTime.value = newTime; } }]); return MobiusRot;
}(THREE.Mesh);
var Simulation = function () { function Simulation(domId, entities) { var x = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; var y = arguments.length <= 3 || arguments[3] === undefined ? 0 : arguments[3]; var z = arguments.length <= 4 || arguments[4] === undefined ? 0 : arguments[4]; _classCallCheck(this, Simulation); var camera = this.createCamera(80, x, y, z, window.innerWidth, window.innerHeight); camera.target = new THREE.Vector3(0, 0, 0); camera.lookAt(camera.target); var scene = new THREE.Scene(); this.createLights(scene); var renderer = this.createRenderer(0x666666); document.getElementById(domId).appendChild(renderer.domElement); var _createComposerAndEff = this.createComposerAndEffects(scene, camera, renderer); var composer = _createComposerAndEff.composer; var effects = _createComposerAndEff.effects; var handleWindowResize = this.onWindowResize(camera, renderer, composer, effects); handleWindowResize(); window.addEventListener('resize', handleWindowResize, false); entities.map(function (e) { return scene.add(e); }); var controls = this.addControls(camera); this.animate(composer, renderer, scene, camera, controls, entities, +new Date()); } Simulation.prototype.addControls = function addControls(camera) { var controls = new THREE.OrbitControls(camera); controls.target = camera.target; controls.enableDamping = true; controls.dampingFactor = 0.1; controls.rotateSpeed = 0.1; return controls; }; Simulation.prototype.createComposerAndEffects = function createComposerAndEffects(scene, camera, renderer) { var effects = {}; var renderScene = new THREE.RenderPass(scene, camera); effects.fxaa = new THREE.ShaderPass(THREE.FXAAShader); effects.fxaa.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight); effects.copy = new THREE.ShaderPass(THREE.CopyShader); effects.copy.renderToScreen = true; var strength = 0.5; var radius = 2.6; var threshold = 0.05; effects.bloom = new THREE.UnrealBloomPass(new THREE.Vector2(window.innerWidth, window.innerHeight), strength, radius, threshold); effects.film = new THREE.ShaderPass(THREE.FilmShader); var composer = new THREE.EffectComposer(renderer); composer.setSize(window.innerWidth, window.innerHeight); composer.addPass(renderScene); // composer.addPass(effects.film) composer.addPass(effects.fxaa); composer.addPass(effects.bloom); composer.addPass(effects.copy); renderer.gammaInput = false; renderer.gammaOutput = true; return { composer: composer, effects: effects }; }; Simulation.prototype.onWindowResize = function onWindowResize(camera, renderer, composer, effects) { return function (event) { var width = window.innerWidth; var height = window.innerHeight; camera.aspect = width / height; camera.updateProjectionMatrix(); renderer.setSize(width, height); composer.setSize(width, height); effects.fxaa.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight); }; }; Simulation.prototype.animate = function animate(composer, renderer, scene, camera, controls, entities, lastTime) { var _this2 = this; var currentTime = +new Date(); var timeDelta = currentTime - lastTime; entities.forEach(function (e) { return e.time += timeDelta / 1000; }); requestAnimationFrame(function () { _this2.animate(composer, renderer, scene, camera, controls, entities, currentTime); }); controls.update(); composer.render(); // renderer.render(scene, camera) }; Simulation.prototype.createCamera = function createCamera(fov) { var x = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; var y = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2]; var z = arguments.length <= 3 || arguments[3] === undefined ? 0 : arguments[3]; var width = arguments[4]; var height = arguments[5]; var camera = new THREE.PerspectiveCamera(fov, width / height, 1, 1000); camera.position.x = x; camera.position.y = y; camera.position.z = z; return camera; }; Simulation.prototype.createLights = function createLights(scene) { var light = new THREE.AmbientLight('#f8845e', 1.5); scene.add(light); var hemilight = new THREE.HemisphereLight('#b82d98', '#26688f', 0.5); scene.add(hemilight); var dirLight = new THREE.DirectionalLight(0xffffff, 0.6); dirLight.color.setHSL(0.1, 1, 0.95); dirLight.position.set(-1, 1.75, 1); dirLight.position.multiplyScalar(50); scene.add(dirLight); }; Simulation.prototype.createRenderer = function createRenderer() { var clearColor = arguments.length <= 0 || arguments[0] === undefined ? 0x000000 : arguments[0]; var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); renderer.setPixelRatio(window.devicePixelRatio); renderer.toneMapping = THREE.LinearToneMapping; renderer.autoClear = true; renderer.setClearColor(clearColor, 0); return renderer; }; return Simulation;
}();
Fluid-mobius-2.1.1 - Script Codes
Fluid-mobius-2.1.1 - Script Codes
Home Page Home
Developer Not Important
Username clindsey
Uploaded November 16, 2022
Rating 4.5
Size 8,472 Kb
Views 16,192
Do you need developer help for Fluid-mobius-2.1.1?

Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!

Not Important (clindsey) Script Codes
Create amazing love letters with AI!

Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!