Skip to main content

Three JS Point Buffer point shadow/size

I am relatively new to threeJS and I am creating a 3D view point cloud app.

I have created a threejs app which loads a series of points into a THREE.BufferGeometry and then updates the camera position.

 scene.clear();

    var pointBuffer = new THREE.BufferGeometry();
    var points = [];
    var colors = [];

    for(var i = 0; i < array.length; i++){
        var point = array[i];
        var x = parseFloat(point.x);
        var y = parseFloat(point.y);
        var z = parseFloat(point.z);
        var r = parseFloat(point.r);
        var g = parseFloat(point.g);
        var b = parseFloat(point.b);

        //If not Nah then add to the array
        if(!isNaN(x) && !isNaN(y) && !isNaN(z) && !isNaN(r) && !isNaN(g) && !isNaN(b))
        {
            points.push(x, z, y);
            colors.push(r / 255, g / 255, b / 255);
        }
    }

    pointBuffer.setAttribute('position', new THREE.Float32BufferAttribute(points, 3));
    pointBuffer.setAttribute('color', new THREE.Float32BufferAttribute(colors, 3));

    var boundingSphere = new THREE.Sphere();
    boundingSphere.setFromPoints(points);
    pointBuffer.boundingSphere = boundingSphere;

    //Stop the points chnaing size when zooming in and out

    var pointMaterial = new THREE.PointsMaterial({size: 0.1, vertexColors: true});
    var pointCloud = new THREE.Points(pointBuffer, pointMaterial);
    scene.add(pointCloud);

    var pointCamera = array[0];
    var x = parseFloat(pointCamera.x);
    var y = parseFloat(pointCamera.y);
    var z = parseFloat(pointCamera.z);
    var r = parseFloat(pointCamera.r);
    var g = parseFloat(pointCamera.g);
    var b = parseFloat(pointCamera.b);

    controls.target.set(x, z, y);
    camera.position.set(x, z + 5, y);

The camera has been set up as follows:

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 80, window.innerWidth / window.innerHeight, 0.05, 250 );

    const renderer = new THREE.WebGLRenderer();
            var container = document.getElementById('webglviewer');
            renderer.setSize(container.offsetWidth, container.offsetHeight);
            container.appendChild( renderer.domElement );

            const controls = new THREE.OrbitControls(camera, renderer.domElement);
            controls.target.set(camera.position.x + 0.1, camera.position.y, camera.position.z);
            controls.enableDamping = true;
            controls.dampingFactor = 0.1;
            camera.position.set(0, 0, 5);
            renderer.render( scene, camera );

            animate();

            window.addEventListener('resize', onWindowResize, false);

            window.addEventListener('click', MoveCamera);

When this code is run the following shadows or point size "bands or lines" appear within the view.

enter image description here

I am expecting the points to appear at a fixed size which is then updated depending on the distance from the camera? (If this is a point size issue).

Or the "Shadows" to have a smooth transition across the points. I havent explicitly setup a light within the app.

Any help with this is much appreciated :)

Via Active questions tagged javascript - Stack Overflow https://ift.tt/0Cb8oBq

Comments

Popular posts from this blog

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

The number of nodes and edges I calculated manually and by a method provided by networkx library dont match

I am trying to analyse a graph using networkx library in Python. I have implemented a function that returns the nodes and edges of that graph. After that I counted the number of nodes and edges by implementing the len() function for nodes and edges, which gave me 17 for both nodes and edges. However, when I used the method graph.number_of_nodes() of networkx library it gave me 53. My code: import pandas as pd import networkx as nx import matplotlib.pyplot as plt header_list = ["a","b","w"] E =pd.read_csv("aves-barn-swallow-contact-network.edges",sep=" ",header= None,names=header_list) # print(E.head()) # prints first few rows of the csv file G = nx.from_pandas_edgelist(E,"a","b",["w"]) nx.draw(G) plt.show() class GraphAnalyse: #finding nodes and edges def nodeEdge(self,Graph): nodes = Graph.nodes() edges = Graph.edges() ...