transformation – Get world object transform relative to another object (potential parent)

I’m attempting to parent a bullethole decal to a dynamic object. I’ve figured out how to set the correct position for the bullethole object so that it shows at the correct position of the dynamic object, but once that dynamic object is rotated, parenting new bulletholes are skewed because I’m not compensating for the rotation of the dynamic object (the child object, bullethole decal in this case, is translated relative to the parent, which is why I’m attempting to remove the initial rotation of the parent object to get the actual rotation for the child). I’ve probably done a terrible job of explaining this…so here is a video of what I’m working on (note that the bulletholes that are added to the barrel before it is moved stay where they should be, and it’s only after the barrel is rotated that new bulletholes become skewed)

So I believe I know what needs to happen, I’m just not sure how to go about implementing it. I need to compensate for the rotation of the barrel at the time the bullethole is parented to it, setting the rotation of the bullethole to this value. Possibly an easy question to answer for someone with experience working with quaternions.

if (raycast.hasHit())
    auto hitPoint = vel::helpers::functions::bulletToGlmVec3(raycast.m_hitPointWorld);
    bulletObject->currentPositionFromScreen = hitPoint;
    bulletObject->disposeOnNextTick = true;

    auto normal = vel::helpers::functions::bulletToGlmVec3(raycast.m_hitNormalWorld);
    float nrmDot = glm::dot(normal, glm::vec3(0.0f, 1.0f, 0.0f));

    auto bulletHoleAdjustmentValue = this->currentBulletHoleIndex == 0 ? 0.00001f : 0.00001f + (0.00001f * this->currentBulletHoleIndex);
    auto bulletHolePosition = hitPoint + (normal * glm::vec3(bulletHoleAdjustmentValue, bulletHoleAdjustmentValue, bulletHoleAdjustmentValue));

    auto bulletHoleActor = this->>currentBulletHoleIndex);

    if (this->currentBulletHoleIndex < (this->bulletHoleQueueSize - 1))
        this->currentBulletHoleIndex = 0;


    if (nrmDot < 1.0f && nrmDot > -1.0f)
        bulletHoleActor->getTransform().setRotation(glm::toQuat(glm::transpose(glm::lookAt(hitPoint, bulletHolePosition, glm::vec3(0.0f, 1.0f, 0.0f)))));
        bulletHoleActor->getTransform().setRotation(90.0f, glm::vec3(1.0f, 0.0f, 0.0f));


    // if physics object has a user pointer, parent bullethole actor to the actor which that value represents
    if (raycast.m_collisionObject->getUserPointer() != nullptr)
        auto dynamicActor = (vel::scene::stage::Actor*)raycast.m_collisionObject->getUserPointer();
        bulletHolePosition =  bulletHolePosition - dynamicActor->getTransform().getTranslation();
        // Was thinking below would work, but it does not for some reason?
        //auto newRotation = bulletHoleActor->getTransform().getRotation() * glm::inverse(dynamicActor->getTransform().getRotation());



sports – How did John Cheng create his photograph of Simone Biles at the FIG Gymnastics World Championships?

This isn’t really “a” photograph. It’s what’s known in the photojournalism world as a “photo illustration” that allows the photographer more leeway in producing an image.

Not only have multiple frames been combined to show the various positions of the athlete as she performed a vault, but it looks like a lot of tone mapping and detail enhancement has been done as well. Tone mapping and detail enhancement are two of the main things that are often used when processing “HDR” images created from bracketed exposures. But the same processing techniques can be used with single images or a series of images all shot at the same exposure. Even apart from an “HDR” application, the controls for contrast, highlights, shadows, blacks, curves, etc. can do tone mapping. Masks and layers allow one to apply specific adjustments to parts but not all of a scene. Sharpening settings, particularly the “unsharpen mask” can do a lot of the same thing as what HDR applications call “detail enhancement” or “clarity.” Likewise, a lot of individual adjustment of different colors with an HSL (Hue – Saturation – Luminance) tool can mimic use of a “vibrance” adjustment.

I’m guessing, based on the quality of the image, that the individual frames were not video frame grabs, but rather high resolutions stills from a high fps (frames-per-second) camera such as the Canon EOS 1D Mark II (up to 16 fps), Sony α9 (up to 20 fps), or the Nikon D5 (up to 12 fps).

ProwHost Offers Shared Hosting Around the World (13 Locations) Starting at 99 Cents/Month!

Hello again, ProwHost!  We last had an offer for them on February 13, 2021.  They’re bringing us some deeply discounted shared hosting offers starting at just 99 cents per month.

And I’ll add that you can host in

  • Virginia, USA
  • Oregon, USA
  • Ohio, USA
  • Singapore
  • London, UK
  • Frankfurt, Germany
  • Mumbai, India
  • Paris, France
  • Seoul, South Korea
  • Ireland
  • Tokyo, Japan
  • Montreal, Canada
  • Sydney, Australia

Looks like they’re riding on AWS (based on the Looking Glass, see below), which may explains the most bandwidth allowance.  But it’s probably very reliable given the rock-solid infrastructure and network.  Sounds perfect for brochure sites, resume hosting, or smaller sites that may someday grow bigger.

They are registered in Delaware (EIN 32-0639950). Their Terms of Service is available on their web site. They accept PayPal, Credit Cards.

Here’s a little about ProwHost in their own words:

“ProwHost was established in 2020. Aiming to gain an important share in the web hosting and cloud server sector since its establishment, ProwHost continues on its way with sure steps.”

If you have been a customer of ProwHost or you give them a try out now, please comment below.

Now read more to see the offers!

Web Starter

  • 1 Hosted Domains
  • 5 GB Disk Space
  • 50 GB Bandwidth
  • Super Fast SSD Storage
  • Shared IP Address
  • Free SSL Certificate
  • Plesk Control Panel
  • 99.95% Uptime
  • 24/7 Ticket Support
  • $0.99/mo
  • (ORDER)

Web Business

  • 1 Hosted Domains
  • 10 GB Disk Space
  • 250 GB Bandwidth
  • Super Fast SSD Storage
  • Shared IP Address
  • Free SSL Certificate
  • Plesk Control Panel
  • 99.95% Uptime
  • 24/7 Ticket Support
  • $1.99/mo
  • (ORDER)



Please let us know if you have any questions/comments and enjoy!


I’m Andrew, techno polymath and long-time LowEndTalk community Moderator. My technical interests include all things Unix, perl, python, shell scripting, and relational database systems. I enjoy writing technical articles here on LowEndBox to help people get more out of their VPSes.

magento2 – Magento 2 – Create simple hello world script with UiComponent

I try to create my own Component and reuse it.
So I created these files:

Component File:


function($, Component) {
  "use strict";

    return Component.extend({
        initialize: function () {
            return this._super();
        test: function()



var config = {
    paths: {
        inputNumber: 'js/elements/custom/input_number'


I copied the file from vendor into my theme so that I can make changes. Now I try to use my component and call my test method:

), function (Component, customerData, $, ko, _, inputNumber) {
    'use strict';



But now I get this in the console (ERROR) Failed to load the "Magento_Checkout/js/view/minicart" component.

shadowrun – There’s a sixth world, and a fourth world. Where are the others?

A Reddit thread I stumbled upon, mentioned some kind of “origin story” or “creation myth”, told from the point of view of a Great Dragon named Icewing, from the Earthdawn book about Horrors apparently.

From what I remember, that story mentioned a realm with a very strong creature. That creature decided to create smaller creatures which looked like itself. These smaller entities decided to do the same, each creating minions. They all attempted to gain the attention of the greater creature by fighting among each other.

Only one of them did not fight, a creature calling itself Nightslayer. It flew away from its kind, into a different world. There, its tears created 9 creatures: Dragon, Elf, Human, Obsidiman, T’skrang, Dwarf, Windling, Troll and Ork. Interestingly enough, the Dragons are described as being created in its image (so I guess it was an even bigger Dragon than the Great Dragons themselves).

Later, the former greater creature mounted an attack, aiming at destroying the one which ran away and its creations. But Nightslayer had prepared for this event and taught the Dragons & cie how to fight back. After which the greater creature revealed itself to be the Horror known as Verjigorm (which is known by some as the Hunter of Great Dragons). Before leaving, it threw an attack which killed Nightslayer, who wanted to protect its “children”.

Judging by the detailed answer provided by Ahriman, and assuming the Great Dragon Icewing is telling the truth, I would like to believe that these events seem to predate the Third Age, although we wouldn’t know whether or not the creature which created the Great Dragons was still alive around the Second Age when the Horrors attacked, or if it died even before the First Age started.

Do guest post over the world on editorial and non editorial sites for $50

Do guest post over the world on editorial and non editorial sites

Looking for Guest Posting on Editorial and Non-Editorial site?

Do you want to rank your Site #1 on Google?

We are here to help you.

Ranking #1 on Google requires High-Quality Guest Post Backlinks. This gig will help you to get a link from High DA Google News Approved Website with Dofollow Backlink.

We have 100+ Editorial / Non-Editorial Sites.

All of the sites are google news approved, which will give you faster indexing.

Here is the list of Countries, States under Our Territory


United Kingdom

































Costa Rica

El Salvador





This is NOT a PBN Site!

This Site has powerful links all over the links from the world, Getting a Contextual Dofollow link from it will boost you up in SERP.

We Don’t Accept

Adult Niche.

We own all the websites, we are completely responsible for your articles and We are not resellers.

Contact me Before Placing an order.


procedural generation – How can we generate 3D architecture in a racing game’s background procedurally with respect/similar to the real world?

AFAIK they achieve this by

Parameterized Procedural Placement

They create a workflow where you create a handful assets in this case building floors and they procedurally tweak the parameters such as Floor count,size,tint and custom props such as air conditioning outside of the buildings.

I once a saw a video about ubisoft creating a procedural assasins creed city.They premade a bunch of houses and spread them randomly.

You should desing a workflow where you control how your building floors are stacked on each other and how each floor has its own specific unique props.

This is what i would do

  • I would decide what a building floor means to me.These would be my parameters: IsGroundFloor?, width and height of the floor, how many windows, a balcony?, general tint color of the floor material and unique set of models.(Such as vegatation, flowers, air conditioning or a satallite dish perhaps?).
  • I would decide how many floors should a building has.Define the minimum and the maximum
  • I would decide what will be the floor independent objects such as fire escape ladder which starts from ground to the top of the building, some garden? or fences?

with these parameters one can create wide range of different buildings considering you feed your procedural workflow with enough assets

models – How can we generate 3D architecture in the background procedurally with respect/similar to the real world?

In the last few days, I jumped into searching is there a conventional/convenient way to build 3D architecture quickly, most likely by some accessory software like CityEngine, BIGEMAP, or google maps’ Maps SDK for Unity.

However, I couldn’t figure out the most suitable solution that typically suits the requirement of “generate 3D architecture models by the racing road which is referencing the real world map“, or just simply “build a massive amount of 3D architecture models”, efficiently and handily.

How did popular racing games like Need For Speed and Asphalt do that? Their buildings in the scene are quite outstanding to me. Could someone give me a relatively accurate answer? I need a little guide to this problem, not necessarily to be very professional but at least some tips to improve the process of doing so.

Thanks in advance! Spanning the Globe (37 Locations Around the World Including North America, South America, Asia, Europe, Africa, and Oceania)

Some of you may remember the ABC Wide World of Sports intro which pronounced they were “spanning the globe to bring you constant variety in sports”.  AcroServers isn’t sports programming, but they are spanning the globe to bring you a VM in your neck of the woods (or someone else’s, if that’s what you want).

  • Europe: 20 locations from Amsterdam to Zurich
  • North America: 10 locations from Atlanta to Washington
  • South America, Asia, Oceania, Africa: Yep, all covered

They’ve got 37 locations worldwide including many less-common locations so if you can’t find a provider in a geography you want, check out their locations.

AcroServers is a Polish company, registered in their homeland (NIP: 6871971968). Their Terms of Service is available on their web site. They accept PayPal, BitCoin, Credit Card.

Here’s a little about AcroServers in their own words:

We offer instant activated VPS Cloud worldwide, 1Gbit/s (37 locations), 2Gbit/s (20TB bandwitch) and VPN services. Starting from 5EUR with already 1Gb/s. Our goal is to provide secured VMs and our policy is all about your privacy.

Remember that the LEB community would love to hear about your experience in the comments section below!

Now read more to see the offers!


  • 1 CPU
  • 512 MB RAM
  • 10 GB SSD
  • 1 Gbps (shared)
  • 500 GB transfer
  • 5.00EUR/month
  • Cloud/KVM
  • Coupon: lowendtalk
  • (ORDER)


  • 1 CPU
  • 1GB RAM
  • 30 GB SSD
  • 1 Gbps (shared)
  • 1.5TB transfer
  • 10.00EUR/month
  • Cloud/KVM
  • Coupon: lowendtalk
  • (ORDER)


  • 2 CPU
  • 2 GB RAM
  • 40 GB SSD
  • 1 Gbps (shared)
  • 2TB transfer
  • 15.00EUR/month
  • Cloud/KVM
  • Coupon: lowendtalk
  • (ORDER)


  • 4 CPU
  • 2 GB RAM
  • 20 GB SSD
  • 1 Gbps (shared)
  • 2.5 TB transfer
  • 20.00EUR/month
  • Cloud/KVM
  • Coupon: lowendtalk
  • (ORDER)


  • 2 CPU
  • 4 GB RAM
  • 20 GB SSD
  • 1 Gbps (shared)
  • 2,5 TB transfer
  • 20.00EUR/month
  • Cloud/KVM
  • Coupon: lowendtalk
  • (ORDER)


  • 4 CPU
  • 4 GB RAM
  • 80 GB SSD
  • 1 Gbps (shared)
  • 4 TB transfer
  • 35.00EUR/month
  • Cloud/KVM
  • Coupon: lowendtalk
  • (ORDER)




Please let us know if you have any questions/comments and enjoy!


I’m Andrew, techno polymath and long-time LowEndTalk community Moderator. My technical interests include all things Unix, perl, python, shell scripting, and relational database systems. I enjoy writing technical articles here on LowEndBox to help people get more out of their VPSes.

blockchain – In case of private data collections how can the nodes that don’t have complete access to the transactions know about the world state?

Hyperledger Fabric offers the ability to create private data collections, which allow a defined subset of organizations on a channel the ability to endorse, commit, or query private data without having to create a separate channel.
In that case, how can the nodes that don’t have complete access to the transactions know about the world state?
Will the world state differ between the organization that has and doesn’t have the access to the private data?