BBC BASIC
« Real time 3D image edit concept »

Welcome Guest. Please Login or Register.
Mar 31st, 2018, 10:45pm



ATTENTION MEMBERS: Conforums will be closing it doors and discontinuing its service on April 15, 2018.
We apologize Conforums does not have any export functions to migrate data.
Ad-Free has been deactivated. Outstanding Ad-Free credits will be reimbursed to respective payment methods.

Thank you Conforums members.
Cross-platform BBC BASIC (Windows, Linux x86, Mac OS-X, Android, iOS, Raspberry Pi)
BBC BASIC Resources
BBC BASIC Help Documentation
BBC BASIC for Windows Home Page
BBC BASIC Programmers' Reference
BBC BASIC Beginners' Tutorial
BBC BASIC for SDL 2.0 Home Page
BBC BASIC Discussion Group

« Previous Topic | Next Topic »
Pages: 1  Notify Send Topic Print
 thread  Author  Topic: Real time 3D image edit concept  (Read 144 times)
michael
Full Member
ImageImageImage


member is offline

Avatar




PM


Posts: 157
xx Real time 3D image edit concept
« Thread started on: Sep 18th, 2017, 5:03pm »

Save this program before executing.

This shows the idea behind real time editing a set of rendered triangles in 3D.

The actual 3D image is changed during every cycle and updated on the renderer.

Later, more triangles will be created with controls for each one in a program that runs along side the renderer. So a person can make simple 3D images easily.

The renderer will look for commands in a file to appear to sync the new image load and to wait so the image doesn't cycle needlessly.

(by the way, it works on BBCSDL also. I am going to test it on Mac and on Raspberry Pi 3 as soon as I get the editor set up.. Which should be tonight (Sept 18, 2017 before midnight in Alberta Canada)

Code:
      peak=0      IF INKEY$(-256)="W" INSTALL @lib$+"D3DLIBA" ELSE INSTALL @lib$+"OGLLIB"      MODE 8      DIM l%(0), b%(1), n%(1), f%(1), s%(1), m%(1), t%(1), y(1), p(1), r(1), X(1), Y(1), Z(1), e(2), a(2)      ON CLOSE PROCcleanup:QUIT      ON ERROR PROCcleanup:PRINT REPORT$:END      IF INKEY$(-256)="W" d% = FN_initd3d(@hwnd%, 1, 0) ELSE d% = FN_initgl(@hwnd%, 1, 0)      IF d% = 0 ERROR 100, "Can't initialise Direct3D"      e() = 0, 0, -6      a() = 0, 0, 0      l%()=1      REPEAT        PROCcreate3d        b%(0) = FN_load3d(d%, @dir$+"TRIANGLE.FVF", n%(0), f%(0), s%(0))        IF b%(0) = 0 ERROR 100, "Can't load TRIANGLE.FVF"        REM  t%(1) = FN_loadtexture(d%, @dir$+"purple.JPG")        REM  IF t%(1) = 0 ERROR 100, "Can't load face.JPG"            y() +=.01:REM yaw (rotations around the Y axis)        REM pitch        p() =0:REM TIME/100 (pitch angles rotations around the X axis)        REM roll        r() = 0:REM TIME/40 (roll angles (rotations around the Z axis)        REM X (right left)        X() = 0:REM SIN(TIME/200)        REM Y() up and down        Y() = 0        REM Z() depth        Z() =  10:REM          REM PROC_render(d%, &FF7F7F7F, 0, l%(), 2, m%(), t%(), b%(), n%(), f%(), s%(), y(), p(), r(), X(), Y(), Z(), e(), a(), PI/4, 5/4, 1, 1000)        PROC_render(d%, &FF7F7F7F, 0, l%(), 2, m%(), t%(), b%(), n%(), f%(), s%(), y(), p(), r(), X(), Y(), Z(), e(), a(), PI/4, 5/4, 1, 1000, 0) :REM experimental        REM          1     2       3   4    5   6     7     8     9     10    11   yaw pitch roll X    Y    Z eye0123  18   19   20   ^mcd  ^( cam to farplane dist)        REM 1 Val returned from FN_init3D        REM 2 back color   3 #of lights   4 light pointers        REM t%() - holds texture        REM mcd - minimum near cam distance          WAIT 1      UNTIL FALSE      END      DEF PROCcleanup      t%(1) += 0:IF t%(1) PROC_release(t%(1))      b%(0) += 0:IF b%(0) PROC_release(b%(0))      b%(1) += 0:IF b%(1) PROC_release(b%(1))      d% += 0   :IF d%    PROC_release(d%)      ENDPROC      DEF PROCcreate3d      F% = OPENOUT"TRIANGLE.FVF"      peak=peak+0.001      PROC4(6):REM 3 vertices      PROC4(&100042):REM vertex size &10 and format &42      REM       LL x            LL y            LL z      PROC4(FN_f4(-1.0)):PROC4(FN_f4(-1.0)):PROC4(FN_f4(1.0)):PROC4(&FF0000FF)      REM       LR x            LR y            LR z      PROC4(FN_f4(1.0)):PROC4(FN_f4(-1.0)):PROC4(FN_f4(1.0)):PROC4(&FF0000FF):REM PROC4(&FF00FF00)      REM     PEAK X     PEAK Y             PEAK Z      PROC4(FN_f4(1.0)):PROC4(FN_f4(1.0)):PROC4(FN_f4(peak)):PROC4(&FF0000FF):REM PROC4(&FFFF0000)      PROC4(FN_f4(-1.0)):PROC4(FN_f4(-1.0)):PROC4(FN_f4(1.0)):PROC4(&FF0000FF):REM PROC4(&FF0000FF)      REM       LR x            LR y            LR z      PROC4(FN_f4(-1)):PROC4(FN_f4(1.0)):PROC4(FN_f4(1.0)):PROC4(&FF0000FF):REM PROC4(&FF00FF00)      REM     PEAK X     PEAK Y             PEAK Z      PROC4(FN_f4(1.0)):PROC4(FN_f4(1.0)):PROC4(FN_f4(-peak)):PROC4(&FF0000FF):REM PROC4(&FFFF0000)      CLOSE #F%      ENDPROC      DEF PROC4(A%):BPUT#F%,A%:BPUT#F%,A%>>8:BPUT#F%,A%>>16:BPUT#F%,A%>>24:ENDPROC 
« Last Edit: Sep 18th, 2017, 8:34pm by michael » User IP Logged

I like reinventing the wheel, but for now I will work on tools for D3D
Pages: 1  Notify Send Topic Print
« Previous Topic | Next Topic »

| |

This forum powered for FREE by Conforums ©
Terms of Service | Privacy Policy | Conforums Support | Parental Controls