Author Topic: [DLL] Large Orthographic Screenshots  (Read 1813 times)

Here is a DLL I made a long time ago to take large orthographic screenshots. It can be useful for generating maps, pretty looking isometric screenshots, or super crisp renders of models.

Large screenshot of the Golden Gate Bridge:

https://leopard.hosting.pecon.us/dl/vvsbb/orthoScreenshot.png

Crispy screenshot of the Blockhead (large screenshot downscaled):

https://i.imgur.com/mvhEpuw.png

This DLL also fixes the size limitation of $megaShotScaleFactor.

Usage: enter "setOrthoCamera(true, <scale>);" into the console, position your camera to your liking, then enter "doHUDOrthographicScreenshot(<divisions>);". The higher the scale, the more zoomed out you will be. The higher the divisions, the more the frustum will split and increase the resolution of your screenshot. The resulting file will be written to your game directory as orthoScreenshot.png.

NOTE: does not work with shadows yet. It's planned to support them later.

Enjoy! As usual, you can DM me for a build or instructions.

Source: (github)
« Last Edit: January 29, 2020, 02:37:20 PM by CompMix »

I made a quick script to snap your view to a certain vector to make it easier to take isometric shots (adapted from old aimbot script):

Code: [Select]
function snapAimToVec(%obj, %target)
{
    %ev = %obj.getEyeVector();

    %x = getWord(%ev, 0);
    %y = getWord(%ev, 1);
    %z = getWord(%ev, 2);

    %xx = getWord(%target, 0);
    %yy = getWord(%target, 1);
    %zz = getWord(%target, 2);

    $mvYaw   = mATan(%xx, %yy) - mATan(%x, %y);
    $mvPitch = mATan(%z, mSqrt(%x * %x + %y * %y)) - mATan(%zz, mSqrt(%xx * %xx + %yy * %yy));
   
    if ($mvYaw > $pi)
        $mvYaw -= $pi * 2;
   
    if ($mvYaw < -$pi)
        $mvYaw += $pi * 2;
}

Try "snapAimToVec(findclientbyname("namehere").getControlObject(), "0.57735 -0.57735 -0.57735");"! You can also do "0 0 -1" for %target and then use "$mvYaw = $pi / 2;" for top-down shots.

Edit: Someone wanted to make a 360 view of a build, so I wrote a quick script for that too:

Code: [Select]
function snapAimCircle(%obj, %angle, %center, %height, %width)
{
    %circle = vectorScale(mCos(%angle) SPC mSin(%angle) SPC 0, %width);
    %pos    = getWords(vectorAdd(%center, %circle), 0, 1) SPC (getWord(%center, 2) + %height);
   
    %obj.setTransform(%pos SPC getWords(%obj.getTransform(), 3, 6));
    snapAimToVec(%obj, vectorNormalize(vectorSub(%center, %pos)));
}

"snapAimCircle(findclientbyname("namehere").getControlObject(), <angle in radians>, <center of build xyz>, <height>, <width>);" to move your control object (camera works best) and snap its view to the center around a circle.

Result:

https://i.imgur.com/J0RHEOz.gifv

(I'm really terrible at making GIFs, but more skilled people can use this to make something better!)
« Last Edit: January 26, 2020, 08:47:36 PM by CompMix »