Can you provide some guidance on how to implement a magnifying glass effect to zoom in on objects within a 3D scene created with three.js or babylon.js

I've been on a journey to discover how to implement a magnifying glass effect that tracks the mouse and enlarges elements within a scene. Imagine something similar to a rifle scope. Any suggestions on how to begin this project?

Answer №1

As I pondered the question, a solution presented itself to me. Although it may not be the exact babylon.js solution I sought, it still serves its purpose well. By utilizing divs and jquery, I was able to create a magnification effect on the source image used as a material on a plane within a 3D space. The key lies in the 'overtarget' function where the mouse position over the target is translated into a percentage of the image's dimensions, allowing for precise movement of the magnified div inside the glass based on that percentage. I incorporated PHP to retrieve the image from a database and calculate its size, aligning with the structure of my project. However, you can begin with any image and manually input the height and width values.

For a demonstration, you can visit:

I believe this technique could prove valuable to someone exploring applications such as using it as a rifle scope in a game or similar scenarios.

<?php
 $studyID= $_GET['studyID'];
 $myServer = "[your server]";
 $myUser = "[you]";
 $myPass = "[password]";
 $myDB = "[db]"; 
 $dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer"); 
 $selected = mssql_select_db($myDB, $dbhandle) or die("Couldn't open database $myDB");
 $query = "SELECT * FROM [your table] WHERE id=".$studyID;
 $result = mssql_query($query);
 $numRows = mssql_num_rows($result);
 while($row = mssql_fetch_array($result)) {
     $imageFile= $row["imageFile"];
     $mag= $row["mag"];
 }
 mssql_close($dbhandle);
 $size = getimagesize($imageFile);
 $ht=$size[1];
 $wd=$size[0];
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
 [...]
</script>

 </head>
 <body>
     <canvas id="renderCanvas"></canvas>
     <div id="glass"><img id="targetImg" src=""/></div>
     <div id="legend">T=forward<BR />B=back<BR />F=left<BR />H=right</div>
 </body>

https://i.sstatic.net/KcWm9.png

https://i.sstatic.net/8xAAJ.png

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Using Javascript to Discover and Add Elements to an Array

I am facing a challenge with a dataset retrieved from an AJAX call, which contains a list of users and their roles in connection to the project. Some users can have multiple roles, leading to their presence in the result set in different instances. I am ...

How about this: "Looking to Share on Social Media with ME

After developing an app using MEAN.js, I made enhancements to the Articles (blog) section to improve SEO, readability, and design. However, one issue I'm struggling with is how to properly share these Articles on social media platforms like Facebook, ...

The Dysfunction of JQuery UI 1.12.1 Autocomplete

I am encountering some challenges with implementing JQuery UI. The version of JQuery UI I am using is 1.12.1, the latest one available. I have downloaded the autocomplete feature along with all other necessary widgets. In my project, I have placed jquery ...

Utilizing JavaScript to send various arrays to a .NET web service

Hey everyone, I'm currently facing an issue with posting multiple arrays to a .net web service and here is the signature of the web service. <WebMethod()> _ Public Function Lib_Processor(ByVal w_vendor As String(), _ ...

Preserving information throughout an online browsing session

Is there a way to save the data about which buttons a user clicked on while visiting our website without using a database? The issue is that any array I use gets reset every time the user is redirected from the page. Note: I'm still learning PHP ...

Implementing CSS counter-increment with jQuery

Is there a way to use jQuery to set the CSS counter-increment attribute on ".demo:before" even though jQuery cannot access pseudo elements directly? I recall seeing a suggestion on Stack Overflow about using a data attribute and then referencing that value ...

What is the best way to toggle dropdown menu items using jQuery?

Upon clicking on an li, the dropdown menu associated with it slides down. If another adjacent li is clicked, its drop down menu will slide down while the previous one slides back up. However, if I click on the same li to open and close it, the drop down m ...

Unable to create a polygon on the Google Maps API using GPS coordinates inputted from a text field

I am currently developing an interactive map using the Google Maps API. The map includes a floating panel with two input fields where I can enter GPS coordinates. My goal is to create markers and connect them to form a polygon. While I can easily draw lin ...

Error: Unable to assign a value to the 'name' property of an undefined object after modifying input field data

I am currently working on developing a React application. The app includes a button labeled "Add" that, when clicked, adds multiple input fields to the screen. Each line of inputs also features a button marked "X" which allows users to remove that specific ...

What is the method for extracting text from li elements within an ol element using Nightwatch.js?

I need to create a testing tool using Nightwatch to extract titles from a simple list of items and store them in an array. For example, I want the array to contain: Coffee, Tea, Milk. <ol> <li>Coffee</li> <li>Tea</li> < ...

Creating dynamic visual elements on a webpage using HTML: Video

As I continue to learn HTML, CSS, and JavaScript to create a basic website for educational purposes, I have successfully embedded a video stored in my drive using the video element on an HTML page. However, I now aim to also display the video's title, ...

Create a JavaScript button that redirects to a different page within a React application

I am creating a div element using a for-loop and I want to link each div to the "/campaign" page with its respective id. When a div is clicked, I want it to navigate to the "/campaign/id" page and pass the id to the Campaign component. class Home extends ...

Struggling to master YAML integration with Google App Engine?

Seeking assistance with YAML as I am new to it: application: baking-tutorial version: secureable runtime: python27 api_version: 1 threadsafe: true handlers: - url: /robots\.txt static_files: static/robots.txt upload: static/robots\.txt - url: ...

How to change an HTML value to a string using jQuery

Looking for some assistance here: Here is the code snippet I am working with: <td id="myid">something</td> Here is the related JavaScript: var test = $("#myid").html(); console.log(test); if(test == "something"){ alert("Great!"); } I am en ...

Can you explain the functionality of Object.keys when used with a JavaScript variable?

In my application, there is a code snippet that looks like the following: var msg = data.data.modelState[Object.keys(data.data.modelState)[0]]; I'm curious about what the Object.keys portion of this code does and I would appreciate it if someone ...

I am trying to implement a "back to top" button/function for a horizontally scrolling page, but it doesn't seem to be showing up as expected. Is there a way to make this work?

I came across a similar question, but unfortunately it didn't provide the solution I was looking for. My goal is to include a "back to top" button on a side-scrolling page. Despite the inverted axis, I believe it should behave similarly to a regular b ...

Combining data to form Nested Arrays

I have a dataset of records stored in a database and I've been attempting to extract a complex set of information from these records. Here are some sample records for reference: { bookId : '135wfkjdbv', type : 'a', st ...

Click outside to toggle dropdown and hide it

My dropdown menu is currently working, but I would like it to close when I click outside of it. I've tried various solutions provided in other posts, but I just can't seem to get it right. Can someone please help me figure out what I am missing? ...

Steps for assigning user name as local variable for all views in mean.io

Currently, I am working with mean.io but have made the decision to remove all Angular components and replace them with knockout.js. It's important to note that my application is not a single page; instead, I render pages from different views and requi ...

Using Node.js and Multer to update a file uploaded to MongoDB

I have a website that allows users to upload files, but I also want them to be able to edit those files. This would involve the user pressing "edit" and replacing the existing file in the database with a new one. Normally, you can use findByIdAndUpdate for ...