


How to make sure the bottom of a 3D object is fixed on the map using Mapbox and Three.js in Vue?
Apr 04, 2025 pm 06:42 PMMapbox and Three.js in Vue: Implementing the perfect adaptation of 3D models and map perspectives
This article discusses how to synchronize the three-dimensional model with map viewing angle in Vue.js application, combining Mapbox GL JS and Three.js, to ensure that the bottom of the model is always fixed on the map surface and will not be offset due to changes in viewing angles. This is crucial in building geographic information systems or 3D map visualization applications.
Suppose you have successfully rendered the 3D cube to the Mapbox map, but the cube position drifts when the viewing angle moves. The problem lies in the conversion of the Three.js coordinate system and the Mapbox map coordinate system and the setting of model position.
The following code snippet shows a possible problematic code structure, where render
function updates the Three.js camera matrix and calculatemodeltransform
function performs coordinate conversion:
render: (gl, matrix) => { const m = new THREE.Matrix4().fromArray(matrix); const l = new THREE.Matrix4().makeTranslation(modelTransform.translateX, modelTransform.translateY, modelTransform.translateZ) .scale(new THREE.Vector3(modelTransform.scale, -modelTransform.scale, modelTransform.scale)) .multiply(new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(1, 0, 0), modelTransform.rotateX)) .multiply(new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(0, 1, 0), modelTransform.rotateY)) .multiply(new THREE.Matrix4().makeRotationAxis(new THREE.Vector3(0, 0, 1), modelTransform.rotateZ)); customLayer.camera.projectionMatrix = m.multiply(l); customLayer.renderer.resetState(); customLayer.renderer.render(customLayer.scene, customLayer.camera); customLayer.map.triggerRepaint(); }, calculatemodeltransform(point) { const modelAsMercatorCoordinate = mapboxgl.MercatorCoordinate.fromLngLat([point.lng, point.lat], this.modelAltitude); return { translateX: modelAsMercatorCoordinate.x, translateY: modelAsMercatorCoordinate.y, translateZ: modelAsMercatorCoordinate.z, rotateX: this.modelRotate[0], rotateY: this.modelRotate[1], rotateZ: this.modelRotate[2], scale: modelAsMercatorCoordinate.meterInMercatorCoordinateUnits() }; }
The core problem lies in translateZ
of the model and the vertical position when the model is created. We need to adjust the position of the model so that its bottom is precisely aligned with the map plane.
Solution:
- Model creation adjustment: When creating a Three.js model, consider the model height and adjust its vertical position (y-axis) so that its bottom is located in the map plane (usually y=0).
// Create a cube geometry, altitude is the model height const geometry = new THREE.BoxGeometry(20, altitude, 20); const material = new THREE.MeshStandardMaterial({ color, transparent: true, opacity: 0.8 }); const cube = new THREE.Mesh(geometry, material); // Key steps: Place the bottom of the cube on the map plane cube.position.y = altitude / 2;
-
render
function adjustment: In therender
function, adjusttranslateZ
value according to the model height to ensure that the bottom of the model is always aligned with the map plane.
const l = new THREE.Matrix4().makeTranslation(modelTransform.translateX, modelTransform.translateY, modelTransform.translateZ - altitude / 2) .scale(new THREE.Vector3(modelTransform.scale, -modelTransform.scale, modelTransform.scale)) // ...Other transformation matrix
Through the above adjustments, even if the map view angle changes, the bottom of the three-dimensional model will remain on the map surface, achieving perfect viewing angle adaptation. Make sure the altitude
variable correctly reflects the height of the model. If necessary, the vertical position can be further fine-tuned according to the actual geometry of the model.
The above is the detailed content of How to make sure the bottom of a 3D object is fixed on the map using Mapbox and Three.js in Vue?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The core method of building social sharing functions in PHP is to dynamically generate sharing links that meet the requirements of each platform. 1. First get the current page or specified URL and article information; 2. Use urlencode to encode the parameters; 3. Splice and generate sharing links according to the protocols of each platform; 4. Display links on the front end for users to click and share; 5. Dynamically generate OG tags on the page to optimize sharing content display; 6. Be sure to escape user input to prevent XSS attacks. This method does not require complex authentication, has low maintenance costs, and is suitable for most content sharing needs.

To realize text error correction and syntax optimization with AI, you need to follow the following steps: 1. Select a suitable AI model or API, such as Baidu, Tencent API or open source NLP library; 2. Call the API through PHP's curl or Guzzle and process the return results; 3. Display error correction information in the application and allow users to choose whether to adopt it; 4. Use php-l and PHP_CodeSniffer for syntax detection and code optimization; 5. Continuously collect feedback and update the model or rules to improve the effect. When choosing AIAPI, focus on evaluating accuracy, response speed, price and support for PHP. Code optimization should follow PSR specifications, use cache reasonably, avoid circular queries, review code regularly, and use X

The top ten authoritative cryptocurrency market and data analysis platforms in 2025 are: 1. CoinMarketCap, providing comprehensive market capitalization rankings and basic market data; 2. CoinGecko, providing multi-dimensional project evaluation with independence and trust scores; 3. TradingView, having the most professional K-line charts and technical analysis tools; 4. Binance market, providing the most direct real-time data as the largest exchange; 5. Ouyi market, highlighting key derivative indicators such as position volume and capital rate; 6. Glassnode, focusing on on-chain data such as active addresses and giant whale trends; 7. Messari, providing institutional-level research reports and strict standardized data; 8. CryptoCompa

The most suitable tools for querying stablecoin markets in 2025 are: 1. Binance, with authoritative data and rich trading pairs, and integrated TradingView charts suitable for technical analysis; 2. Ouyi, with clear interface and strong functional integration, and supports one-stop operation of Web3 accounts and DeFi; 3. CoinMarketCap, with many currencies, and the stablecoin sector can view market value rankings and deans; 4. CoinGecko, with comprehensive data dimensions, provides trust scores and community activity indicators, and has a neutral position; 5. Huobi (HTX), with stable market conditions and friendly operations, suitable for mainstream asset inquiries; 6. Gate.io, with the fastest collection of new coins and niche currencies, and is the first choice for projects to explore potential; 7. Tra

The real use of battle royale in the dual currency system has not yet happened. Conclusion In August 2023, the MakerDAO ecological lending protocol Spark gave an annualized return of $DAI8%. Then Sun Chi entered in batches, investing a total of 230,000 $stETH, accounting for more than 15% of Spark's deposits, forcing MakerDAO to make an emergency proposal to lower the interest rate to 5%. MakerDAO's original intention was to "subsidize" the usage rate of $DAI, almost becoming Justin Sun's Solo Yield. July 2025, Ethe

Table of Contents Crypto Market Panoramic Nugget Popular Token VINEVine (114.79%, Circular Market Value of US$144 million) ZORAZora (16.46%, Circular Market Value of US$290 million) NAVXNAVIProtocol (10.36%, Circular Market Value of US$35.7624 million) Alpha interprets the NFT sales on Ethereum chain in the past seven days, and CryptoPunks ranked first in the decentralized prover network Succinct launched the Succinct Foundation, which may be the token TGE

Stablecoins are cryptocurrencies with value anchored by fiat currency or commodities, designed to solve price fluctuations such as Bitcoin. Their importance is reflected in their role as a hedging tool, a medium of trading and a bridge connecting fiat currency with the crypto world. 1. The fiat-collateralized stablecoins are fully supported by fiat currencies such as the US dollar. The advantage is that the mechanism is simple and stable. The disadvantage is that they rely on the trust of centralized institutions. They represent the projects including USDT and USDC; 2. The cryptocurrency-collateralized stablecoins are issued through over-collateralized mainstream crypto assets. The advantages are decentralization and transparency. The disadvantage is that they face liquidation risks. The representative project is DAI. 3. The algorithmic stablecoins rely on the algorithm to adjust supply and demand to maintain price stability. The advantages are that they do not need to be collateral and have high capital efficiency. The disadvantage is that the mechanism is complex and the risk is high. There have been cases of dean-anchor collapse. They are still under investigation.

Ethereum is a decentralized application platform based on smart contracts, and its native token ETH can be obtained in a variety of ways. 1. Register an account through centralized platforms such as Binance and Ouyiok, complete KYC certification and purchase ETH with stablecoins; 2. Connect to digital storage through decentralized platforms, and directly exchange ETH with stablecoins or other tokens; 3. Participate in network pledge, and you can choose independent pledge (requires 32 ETH), liquid pledge services or one-click pledge on the centralized platform to obtain rewards; 4. Earn ETH by providing services to Web3 projects, completing tasks or obtaining airdrops. It is recommended that beginners start from mainstream centralized platforms, gradually transition to decentralized methods, and always attach importance to asset security and independent research, to
