STPETERNWOK INC.
00%
CLOSE ✕ Home
About Case Studies Blog Careers Contact
GET IN TOUCH

Let's Talk About
Your Business.

Tell us what you're trying to solve. We'll get back to you within one business day with clear next steps — no sales pressure.

SEND US A MESSAGE

We'd Love to Hear From You

CONTACT DETAILS

Other Ways to Reach Us

Email
info@stpeternwok.com
Phone
+91-6377819370
WhatsApp
+91-6377819370
Address
Jhotwara, Jaipur
Response Time
Within 1 business day
Office Hours
Mon – Fri, 9:00 AM – 6:00 PM
// ---------------- Unique 3D element: pulsing radar / signal beacon rings ---------------- let scene, camera, renderer, rings=[], mouseX=0, mouseY=0; const isMobile = STP_isMobile; const reduceMotion = STP_reduceMotion; function initEngine(){ const canvas = document.getElementById('engine-canvas'); scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 0.1, 1000); camera.position.z = isMobile ? 22 : 16; renderer = new THREE.WebGLRenderer({canvas, antialias:true, alpha:true}); renderer.setSize(window.innerWidth, window.innerHeight); renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); const center = new THREE.Mesh( new THREE.SphereGeometry(isMobile ? 0.7 : 0.9, 16, 16), new THREE.MeshBasicMaterial({color:0xD8A857, transparent:true, opacity:0.85}) ); center.position.set(isMobile ? 0 : 9, 0, -3); scene.add(center); window.beaconCenter = center; const ringCount = 4; for(let i=0;i{ mouseX = (e.clientX / window.innerWidth - 0.5); mouseY = (e.clientY / window.innerHeight - 0.5); }); animateEngine(); window.addEventListener('resize', ()=>{ renderer.setSize(window.innerWidth, window.innerHeight); camera.aspect = window.innerWidth/window.innerHeight; camera.updateProjectionMatrix(); }); } let clock = new THREE.Clock(); function animateEngine(){ requestAnimationFrame(animateEngine); const t = clock.getElapsedTime(); if(!reduceMotion){ rings.forEach((r,i)=>{ const pulse = (t*0.4 + r.userData.offset) % 3; const scale = 1 + pulse*0.18; r.scale.set(scale, scale, scale); r.material.opacity = Math.max(0, r.userData.baseOpacity * (1 - pulse/3)); r.rotation.z = t*0.05 + mouseX*0.1; }); window.beaconCenter.rotation.y = t*0.2; } renderer.render(scene, camera); } initEngine(); ScrollTrigger.create({ trigger: document.body, start: 'top top', end: 'bottom bottom', scrub: true, onUpdate: (self) => { if(reduceMotion) return; const p = self.progress; camera.position.z = (isMobile ? 22 : 16) - p * 4; } });