Capturen van een "in-game" (active) window ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • De_Bastaard
  • Registratie: Oktober 2001
  • Laatst online: 10-07 17:45
Omdat het best lastig is om van een game als Diablo 3 een image te maken van bepaalde items (screenshot maken, openen, editten, saven), dacht ik dat het misschien leuk is om hier een tooltje voor te maken.

Het enige wat ik eigenlijk niet helemaal snap of uitkom, hoe capture ik een window dat in een game wordt weergegeven ? Voor Windows native windows is dit mogelijk, maar als je Diablo 3 als 'active' window gebruikt verwacht ik dat het hele spel gebruikt wordt in plaats van alleen het dialoog dat je te zien krijgt als je iets highlight.

Is dit überhaupt mogelijk? Ik kan er niet echt wat over vinden op stackoverflow e.d.

Acties:
  • 0 Henk 'm!

  • loewie1984
  • Registratie: Mei 2003
  • Laatst online: 09:03
Waarom gebruik je geen fraps? Of xfire ofzo die hebben ook screencapture functionality?

discogs


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zowel fraps als xfire injecten hun eigen d3d dll in het process die alle d3d calls capturet en doorstuurt naar de reguliere d3d implementatie. Op dat moment is het een koud kunstje om voor elke Present() gewoon even de backbuffer te kopiëren.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Acties:
  • 0 Henk 'm!

  • De_Bastaard
  • Registratie: Oktober 2001
  • Laatst online: 10-07 17:45
Hmm ja ik denk dat dit nog iets te lastig is voor een 'novice' als mijzelf :-) Toch bedankt voor de info!

Edit, kleine vraag nog:

Is de backbuffer niet het hele game window ipv het venstertje in het game window dat ik wil hebben?

[ Voor 39% gewijzigd door De_Bastaard op 08-08-2012 10:00 ]


Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 30-06 13:29
De backbuffer is de frame die naar je scherm gestuurd wordt. Dat is dus voor fullscreen het gehele scherm, en voor windowed hangt het een beetje van je definitie af. Bij de backbuffer van een bepaald d3d-proces zit in ieder geval geen border, maar bij de backbuffer die Windows met Aero van je venster bijhoudt zit 'ie wel.

[ Voor 69% gewijzigd door Orwell op 08-08-2012 10:07 ]


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 12:10

TheNephilim

Wtfuzzle

Zou je niet gewoon het hele scherm kunnen capturen en dan met software de te herkennen vensters eruit halen?

Acties:
  • 0 Henk 'm!

  • Garyu
  • Registratie: Mei 2003
  • Laatst online: 12:37

Garyu

WW

Camera naast je scherm en fotootje maken? ;)

It's Difficult to Make Predictions - Especially About the Future


Acties:
  • 0 Henk 'm!

  • Orwell
  • Registratie: December 2009
  • Laatst online: 30-06 13:29
Ja, maar dan moet je ervoor zorgen dat Windows geen backbuffers meer gebruikt, maar ouderwets alles direct naar het scherm toe schildert. Probeer eens (voor Windowed mode) Windows Aero uit te zetten en dan Alt+Printscreen te gebruiken.

Maar er zijn genoeg freeware printscreenprogramma's die backbuffers wel snappen, dus waarom probeer je die niet?

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 10-07 13:07
De_Bastaard schreef op maandag 06 augustus 2012 @ 19:17:

Is dit überhaupt mogelijk? Ik kan er niet echt wat over vinden op stackoverflow e.d.
Als ik het goed begrijp bedoel je met een window in-game zaken zoals je inventory. Deze kun je niet zomaar herkennen , die worden door het spel getekend. Wat je dus moet doen is het hele plaatje capturen en daar dan zelf uit zien te vogelen waar het inventory scherm staat.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 09:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hydra schreef op woensdag 08 augustus 2012 @ 10:33:
[...]


Als ik het goed begrijp bedoel je met een window in-game zaken zoals je inventory. Deze kun je niet zomaar herkennen , die worden door het spel getekend.
Die teken-calls kun je wel onderscheppen en replayen op een eigen rendertarget zodat je louter die window overhoudt. Dit vereist natuurlijk wel enige in-depth kennis van Direct3D.

[ Voor 7% gewijzigd door .oisyn op 08-08-2012 11:06 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • De_Bastaard
  • Registratie: Oktober 2001
  • Laatst online: 10-07 17:45
Hydra, ik bedoel inderdaad dingen zoals het inventory.

Ik ga denk ik nu eens aan de slag met aForge, die kan simpele vormen herkennen en is gemaakt in C#. Als ik dat zo zou kunnen gebruiken dat alleen de vensters waarin een item wordt weergegeven captured, ben ik een blij man. Dat zou wel mogelijk moeten zijn door een redenatie te doen op basis van grootte van vormen.

Acties:
  • 0 Henk 'm!

  • bakakaizoku
  • Registratie: Januari 2002
  • Laatst online: 08-07 09:15
.oisyn schreef op woensdag 08 augustus 2012 @ 11:05:
[...]

Die teken-calls kun je wel onderscheppen en replayen op een eigen rendertarget zodat je louter die window overhoudt. Dit vereist natuurlijk wel enige in-depth kennis van Direct3D.
Anders zou je als omweg bijvoorbeeld een postprocessor kunnen schrijven die je Fraps screenshot directory in de gaten houdt en bij nieuwe screenshots bepaalde (vooraf bepaalde) coordinaten opslaat in een nieuwe file. Voordeel is dat je geen hooks in d3d hoeft te doen, nadeel is wel dat je de gewenste vensters altijd op eenzelfde plek moet laten staan/niet mogen veranderen van grootte.

PSN: bakakaizoku - WoW: Thiccblonde (GM of Phoenix Ascension) @ Twisting-Nether


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 10-07 22:48
Als je dan toch aan het postprocessen bent kan je net zo goed wat beeldherkenning doen en zo die file croppen. Ik neem iig aan dat een venster qua looks niet zo snel zal veranderen in een spel en als het dat wel doen valt er nog wel omheen te werken.

Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 11:10

SinergyX

____(>^^(>0o)>____

Oude versie van Fraps kon een vast specifiek deel van je scherm laten capturen, weet niet of dit nog in de nieuwe versies ook nog kan. Inventory (ingame) op vaste plek zetten, screenshot, klaar.

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • De_Bastaard
  • Registratie: Oktober 2001
  • Laatst online: 10-07 17:45
Nou met die aFraps ben ik inmiddels al wat verder, en gaat best goed. Dat geometrie algoritme erachter en ColorFiltering werkt prima :-)

Ik denk dat ik deze code ga combineren met het croppen (dit zal wel in .net 4 zitten?), om zo een folder processor te maken.

Je hoeft dan alleen maar hele screenshots te maken die altijd in de Diablo 3 folder terecht komen, waarna de image processor de vierkantjes herkent en ze gaat croppen :-)

Ik ben geholpen!

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 10-07 22:48
De_Bastaard schreef op woensdag 08 augustus 2012 @ 12:06:
[...] Ik denk dat ik deze code ga combineren met het croppen (dit zal wel in .net 4 zitten?), om zo een folder processor te maken. [...]
http://www.switchonthecod...ing-cropping-and-resizing :D Oh, wel ff met de opmerking dat dit dus niet met mono gaat draaien. Als je dat wilt zal je moeten uitwijken naar iets als GTK# en de imaging spul daarin.

[ Voor 21% gewijzigd door Caelorum op 08-08-2012 12:38 ]


Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 30-05 18:01
Als alternatief voor het maken van screenshots kan je ook proberen de textures direct uit te lezen, Blizzard slaat alles op in MPQ bestanden. Iemand heeft zelfs al voor je uitgezocht hoe je alle gegevens van items kan vinden en de textures voor die items.

[ Voor 14% gewijzigd door matthijsln op 08-08-2012 20:46 ]


Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 12:10

TheNephilim

Wtfuzzle

Maar dan heeft hij nog geen screenshot van de stats van een item en daar gaat het nu juist om.

Het gaat om dit soort dingen:

Afbeeldingslocatie: http://i48.tinypic.com/mmvts0.jpg
Uit het Diablo 3 trading topic geplukt.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 10-07 13:07
.oisyn schreef op woensdag 08 augustus 2012 @ 11:05:
[...]

Die teken-calls kun je wel onderscheppen en replayen op een eigen rendertarget zodat je louter die window overhoudt. Dit vereist natuurlijk wel enige in-depth kennis van Direct3D.
Dan lijkt me botweg het hele scherm capturen en dan de 'forms' daarop herkennen een stuk simpeler eerlijk gezegd, maar ik weet dan, afgezien van wat probeersels, enorm weinig van DirectX. :)

offtopic:
Wel weer begonnen met iets in XNA maar dat is allemaal zo veel werk *zucht*

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 10-07 22:48
Hydra schreef op donderdag 09 augustus 2012 @ 10:14:
[...]
offtopic:
Wel weer begonnen met iets in XNA maar dat is allemaal zo veel werk *zucht*
XNA is juist makkelijk omdat er al zoveel voor je is gedaan.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 10-07 13:07
Caelorum schreef op donderdag 09 augustus 2012 @ 12:39:
XNA is juist makkelijk omdat er al zoveel voor je is gedaan.
Ja, en nog is het me te veel werk ;)

https://niels.nu

Pagina: 1